C++:类成员函数(例如赋值)返回对象本身即 return *this;是否会调用构造函数?

来源:百度知道 编辑:UC知道 时间:2024/06/09 17:36:16
不明白,如果会,调用哪个构造函数?

不会.对象本身已经构建起来了,所以不用调用构造函数.
return *this; 只会把对象本身当做类成员函数的结果,进行传参数或赋值

他的返回值return * this ;
他的返回说是本身,但起实质是返回全部!所以,会调用构造函数!

这里假设类叫C的话会调用C(C&)这个构造函数,这个构造函数如果你不写,编译器会生成一个默认的,功能时复制对象的全部内容。

*this代表类的对象本身,在返回这个对象本身时,系统会选择构造函数产生一个返回(对象的)副本,这和返回其它C++内建对象时是一样的。
如返回值,返回字符(串)变量等等。

#include <iostream>
using namespace std;

class Test {
public :
Test() {cout<<"constructor\n";}
Test func() {return *this;}
};
int main(int argc, char *argv[])

{
Test t;
t.func();
return 0;
}
-----------------------------------------
output: constructor

------------------------------------------------
没调用构造函数 只是讲自身返回了