不规范的构造函数与STL容器冲突
来源:互联网 发布:microsoft fix it官网 编辑:程序博客网 时间:2024/04/30 08:07
昨天写代码时用了容器 vector,map.其中元素是自己定义的。比如:
- class test
- {
- public:
- test(){a = 0;b= 0;}
- //test(const test& other){a = other.a;b = other.b;}
- test(test& other){a = other.a;b = other.b;}
- test& operator=(const test& other){a = other.a;b = other.b;return *this; }
- ~test(){}
- int a;
- int b;
- };
容器无法push_back()/insert()
报错类似于"An object or reference of type "test" cannot be initialized with an expression of type "const test""..
原来
- void vector<_Ty, _Ax>::insert(iterator _P, size_type _M, const _Ty& _X)
- {_Ty _Tx = _X;
- ......
- }
原来如此。
这就能解释为什么上面容器不能用了。因为我们定义的拷贝构造函数参数是普通引用,必须是只读引用(放开第6行即可用,或者将7行注释掉)。
总结:
- 引用参数 拷贝构造函数用const修饰,这样比较安全规范
- 一旦定义了拷贝构造函数,编译器就使用该构造函数,即使其定义不正确(好像有点废话)
- 不但const函数能重载,const参数也能重载(6,7行同时起作用)
- 不规范的构造函数与STL容器冲突
- STL容器的构造函数
- STL容器与拷贝构造函数
- 函数声明与STL容器构造
- STL容器与拷贝构造函数
- STL容器与默认拷贝构造函数,默认赋值函数
- [C++再学习系列] 函数声明与STL容器构造
- auto_ptr 和 STL容器的冲突与陷阱
- STL与拷贝构造函数
- STL与拷贝构造函数
- 哈希函数的构造与冲突处理
- STL容器与拷贝构造函数 http://blog.csdn.net/heyutao007/article/details/6702626
- STL 容器的复制构造问题
- STL 容器的查找函数
- 有关STL中的容器和MFC的集合类型构造函数区别的一点思考
- 有关STL中的容器和MFC的集合类型构造函数区别的一点思考
- STL容器插入类时的构造函数调用以及插入指针时的情况
- 在使用STL容器时避免使用具有复杂拷贝构造函数的类
- ANDROID Porting系列九、Lights
- ASP.NET状态管理之一(概括篇)
- ASP.NET状态管理之十三(总结)
- find_max
- C/C++内存对齐
- 不规范的构造函数与STL容器冲突
- 怎么显示一个可以选择目录的打开对话框
- 【动态规划】【RQNOJ】刘翔!加油!
- meta标签的大用
- uboot移植,编译及环境变量,启动等方面---from README
- linux的directory
- ic卡的应用
- sscanf 函数遇到的一个小问题及其解决方法
- 关于PHP在数组对象与JSON数据之间的转换问题(编码问题)