kad*_*ina 4 c++ copy-constructor
我写下面的代码,我不明白为什么复制构造函数被调用.
#include <iostream>
using namespace std;
class abc
{
public:
abc()
{
cout << "in Construcutor" << (this) << endl;
};
~abc()
{
cout << "in Destrucutor" << (this) << endl;
};
abc(const abc &obj)
{
cout << "in copy constructor" << (this) << endl;
cout << "in copy constructor src " << &obj << endl;
}
abc& operator=(const abc &obj)
{
cout << "in operator =" << (this) << endl;
cout << "in operator = src " << &obj << endl;
}
};
abc myfunc()
{
static abc tmp;
return tmp;
}
int main()
{
abc obj1;
obj1 = myfunc();
cout << "OK. I got here" << endl;
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,我得到以下输出
in Construcutor0xbff0e6fe
in Construcutor0x804a100
in copy constructor0xbff0e6ff
in copy constructor src 0x804a100
in operator =0xbff0e6fe
in operator = src 0xbff0e6ff
in Destrucutor0xbff0e6ff
OK. I got here
in Destrucutor0xbff0e6fe
in Destrucutor0x804a100
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在我实际分配对象时调用复制构造函数.
如果我声明abc tmp,而不是static abc tmpin myfunc(),那么复制构造函数不会被调用.任何人都可以帮助我了解这里发生了什么.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |