return *this; 这里看是不会调用复制构造函数的,但要看你的函数是怎么定义的
T& fun()
{
return *this;
}
返回的是类的引用,因此没调用复制构造函数
T fun()
{
return *this;
}
这里就调到复制构造函数了
首先要明白一点:
返回的是&引用类型,意味着会直接返回对象本身
返回的不是&引用类型,意味着会先拷贝副本再返回这个新的副本对象,而非对象本身
两者的最大区别,就在于是否加了这个&符号
1. 不调用
const A & getA() //A是类名
{
return *this; //不会调用复制构造函数,因为返回的是&引用类型,即this本身
}
2. 调用
const A getA()
{
return *this; //会调用复制构造函数,这里返回一个A的对象,并非this本身了(缺少了&指定),那就需要创建一个对象A的临时副本。另外,这里的const也就没什么价值了,因为修饰的是一个临时对象。
}
会,*this是一个具体对象.赋值时候会复制对象.如果需要的是引用型的,直接返回this.
当然不会
会 !