C++复制构造函数几种特殊情况
2021-07-05 23:38:13 840
一
int main() {
Test cc;
//会调用拷贝构造函数 将cc赋值给dd, 因为dd不存在(没有初始化), 所以需要调用拷贝构造函数进行初始化
Test dd = cc;
cout << &cc << endl;
cout << &dd << endl;
}
output
copy
00FFFE40
00FFFE30
二
int main() {
Test cc;
Test dd;
//不会调用拷贝构造函数, 因为dd存在, 所以不需要调用拷贝构造函数进行初始化
dd = cc;
cout << &cc << endl;
cout << &dd << endl;
}
output
00B3FD9C
00B3FDAC
有一点不同于Java, C++中对象不能为空,只有指针可以
三
Test c() {
Test t;
//会调用拷贝构造函数, 因为不能返回栈内变量, 需要返回新对象给调用者
return t;
}
int main() {
Test cc = c();
}
output
copy