赋值操作
如果对象在申明之后,在进行的赋值运算,我们称之为赋值运算
String A("hello");
String B;
B=A;
此时实际调用的类的缺省赋值函数B.operator=(A),调用的是...但是,如果对象域内需要申请heap上的空间,那么在析构对象的时候,就会连续两次释放heap上的同一块内存区域,从而导致异常。
因此,对于对象的域在heap上分配内存的情况,我们必须重载赋值运算符。...这样,在对象str1,str2退出相应的作用域,其调用相应的析构函数,然后释放分别属于不同heap空间的内存,程序正常结束。
上述的运算符重载就是深拷贝!...,对于上述的操作符重载返回的是对象,此时对象是临时对象,并且会多调用一次拷贝构造与析构函数,当调用拷贝构造函数的时候,并没有在堆上分配内存,而此时free调的其实就是临时对象,而在后面str1与str2...deconstruct
deconstruct
deconstruct
区别1:会发现使用引用返回后少了四行,原因返回的如果是对象,这个对象是临时对象,返回后会调用一次拷贝构造函数,结束后会调用析构函数,上面使用了两次