首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

什么时候编译器要求小弟我实现operator=()? 不总是

2012-06-13 
什么时候编译器要求我实现operator()? 不总是啊有时候我写一个类,编译器会提示我,必须实现operator().我

什么时候编译器要求我实现operator=()? 不总是啊
有时候我写一个类,编译器会提示我,必须实现operator=().
我并没有实现拷贝构造函数啊,只是实现了一个参数非空的构造函数而已。

是不是有一个参数非空的构造函数,VC编译器就要求我要实现operator=()呢?
C++标准有这样的规定么?

[解决办法]
有啊,比如在使用标准库中的容器时,用sort排序会要求对象的类实现比较操作符,否则就编译不通过了
[解决办法]

探讨
引用:

隐式声明的operator=如果没定义成=delete,只会逐成员复制,对于指针也就是浅复制。如果需要保持所有权(在析构函数内delete),那么需要的是深复制,否则复制以后多次析构delete相同指针值会引起UB。
有时候不会隐式声明非=delete的operator=。如果你还要用,那么就需要自己写了。
ISO C++11
12.8
18 If the c……

热点排行