读书人

为何构造函数只有一次析构两次呢

发布时间: 2012-10-08 19:54:56 作者: rapoo

为什么构造函数只有一次,析构两次呢
#include <iostream>
using namespace std;

class A
{
public:
int data;
A(){cout<<"default"<<endl;}
A(int i):data(i){cout<<"int i construct"<<endl;}
A& operator=(A &temp){data = temp.data; return *this;cout<<"copy construct"<<endl;}
~A(){cout<<"xigou"<<endl;}
};

A play(A a){return a;}


void main()
{
A temp = play(5);
}

结果:
int i construct
xigou
xigou

[解决办法]
参考下面的代码:

C/C++ code
#include <iostream>using namespace std;#include <iostream>using namespace std;class A{public:    int data;    A(){cout<<"default"<<endl;}    A(int i):data(i){cout<<"int i construct"<<endl;}    // 增加的Copy Constructor    A(const A& a)    {        data = a.data;        cout << "copy constructor" << endl;    }    A& operator=(A &temp){data = temp.data; return *this;cout<<"copy construct"<<endl;}    ~A(){cout<<"xigou"<<endl;}};A play(A a){return a;}void main(){A temp = play(5);  // play(5)会调用constructor, 将play(5)产生的对象赋给temp,会调用Copy                    // Constructor} 

读书人网 >C++

热点推荐