条款10,11:operator=处理方式

返回引用

赋值是把一个已有的对象赋值给另外一对象,为了支持a=b=c这种写法,我们默认都要以下的写法:

Widget& operator=(const Widget& rhs)
{
    //do something;
	return *this;
}

类似的operator+=也可以同样操作。

自我赋值处理方式

问题来源

class NUM
{
public:
	T* ptr;
}

现在裸指针用的不多了,但是不可否认还是存在,那么这个赋值时这个ptr需要先delete到自己资源,然后在获取other的资源,这里就会有个大问题,就是你自己赋值给自己,删除资源后面还怎么弄?

提前做一个认同测试,不过我再paddle框架中看只有部分赋值函数这样写,有点奇怪。

Widdget& operator=(const Widget& other)
{
	if(this=&other) return *this;
	//do_something
	return *this;
}

你可能感兴趣的:(Effective,C++,c++)