拷贝构造函数首先是一个构造函数,它调用的时候产生一个对象,是通过参数传进来的那个对象来初始化,产生的对象。
operator=();是把一个对象赋值给一个原有的对象,所以如果原来的对象中有内存分配要先把内存释放掉,而且还要检查一下两个对象是不是同一个对象,如果是的话就不做任何操作。还要注意的是拷贝构造函数是构造函数,不返回值;而赋值函数需要返回一个对象自身的引用,以便赋值之后的操作。
举例:
String s1;
String s2(s1); //调用拷贝构造
String s3 = s1; //还是调用拷贝构造,注意这里不调用赋值=
string s4;
s4 = s3; //这里才是调用赋值=
另外,在构造自己的类型时,有一个小技巧,就是可以在复制构造函数里面调用拷贝构造函数operator=,这样就不用重复写代码了。
复制构造函数与赋值构造函数
最新推荐文章于 2024-06-29 06:01:51 发布