c++primer第四版讲智能指针时在定义HasPtr类的赋值操作符时为什么既使使用计数加一又减一
可不可以举个具体例子说明一下,说明一下如果不这样做会怎样,请问是不是被赋值的对象已经存在。还有,赋值操作符不是应该返回右操作数吗,为什么好像很多返回左操作数*this
回复 3楼 玩出来的代码
你好,这是我我的截图,我想知道,首先我想先搞懂复制操作符号的含义,他的意思是说,比如我已经定义了int a=3,b=2,那么我执行a=b,(即这两个操作数先存在才可以赋值)时才使用我的重载版本,还是说假如我这样定义 string a=“abcd”,然后我这样定义string b=a,(b不事先存在)在这种情况下,那是不是调用我的重载版本,还是调用复制构造函数的版本,我老是搞不懂像string b=a 的是调用哪个版本。第二个问题时,上面是我从书上截出来的图片,我的理解是那个use是大家共享的,所以加了他有减了他不就使他保持原值吗,这不就和直接执行下面三行代码一样的效果吗(即delete下面三行),虽然书上说防止自身赋值,但我还是搞不懂,不知你知不知道我在说什么,如果知道,麻烦说一下,谢谢。