C++ 中return *this会调用复制构造函数吗

2024-12-15 16:33:50
推荐回答(5个)
回答1:

return *this; 这里看是不会调用复制构造函数的,但要看你的函数是怎么定义的
T& fun()
{
return *this;
}
返回的是类的引用,因此没调用复制构造函数
T fun()
{
return *this;
}
这里就调到复制构造函数了

回答2:

首先要明白一点:
    返回的是&引用类型,意味着会直接返回对象本身
    返回的不是&引用类型,意味着会先拷贝副本再返回这个新的副本对象,而非对象本身
    两者的最大区别,就在于是否加了这个&符号

1. 不调用
const A & getA()    //A是类名
{
    return *this;    //不会调用复制构造函数,因为返回的是&引用类型,即this本身
}

2. 调用
const A getA()
{
    return *this;    //会调用复制构造函数,这里返回一个A的对象,并非this本身了(缺少了&指定),那就需要创建一个对象A的临时副本。另外,这里的const也就没什么价值了,因为修饰的是一个临时对象。
}

回答3:

会,*this是一个具体对象.赋值时候会复制对象.如果需要的是引用型的,直接返回this.

回答4:

当然不会

回答5:

会 !