回 帖 发 新 帖 刷新版面

主题:c++primer第四版讲智能指针时在定义HasPtr类的赋值操作符时为什么既使使用计数加一又减一

可不可以举个具体例子说明一下,说明一下如果不这样做会怎样,请问是不是被赋值的对象已经存在。还有,赋值操作符不是应该返回右操作数吗,为什么好像很多返回左操作数*this

回复列表 (共2个回复)

沙发

第一个问题听不懂你在说什么

第二个问题你说“赋值操作符不是应该返回右操作数吗”,不知道可有依据?如果你说得正确的话,那么
int a=0, b=1;
(a=b)=2;
在C++中应该编译不过,然而事实上它语法正确,可以编译通过。

板凳


赋值操作减1,是为了防止对对象本身赋值;
比如:a=a;此时对象实例个数并没增加,如果不减1,对象实例就增加了一个

我来回复

您尚未登录,请登录后再回复。点此登录或注册