c++——拷贝构造函数和赋值运算符的区别

拷贝构造函数和赋值运算符主要有两点不同:

1)拷贝构造函数生成新的类对象,赋值运算符不能;

2)拷贝构造函数是直接构造一个新的类对象,所以在初始化这个对象之前不用检测源对象是否与新建对象相同。赋值运算符需要检测,如果原来的对象中有内存分配要先把内存释放掉;

注意:当类中有指针类型的成员变量时,一定要重写拷贝构造函数和赋值运算符,不要使用默认的。c++11中增加了delete关键字,可以用于禁用默认的拷贝构造函数和赋值运算符。如下代码所示:

class Rational {
	Rational(const Rational&) = delete;
	Rational& operator=(const Rational&) = delete;

	Rational(Rational&&);
	Rational& operator=(Rational&&);
};

 

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