赋值操作符相关

1、赋值操作符的定义

Test& oprerator=(const Test& rhs);

注意:返回值类型必须为引用(一般返回值为*this)

如果不是返回引用,而是直接返回Test,那么从返回形参到实参中间又要继续调用赋值操作符=,这样会形成死循环,导致栈溢出,编译也不能通过

 

2、赋值操作符的调用

Test t1;
t1=t2; //赋值操作符



Test t3=t2; //复制构造函数
 

复制构造函数和赋值操作符的区别:

赋值运算符处理两个已有对象,即赋值前=两边的对象都是存在的;而复制构造函数是生成一个全新的对象,即调用复制构造函数之前=左边的对象不存在。

 

3、深拷贝和浅拷贝

当使用赋值操作符时,要注意对象中是否有指针变量。如果有,则要注意是进行深拷贝还是浅拷贝

posted @ 2016-08-09 18:55  qinm  阅读(156)  评论(0)    收藏  举报