首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-10-08 
为什么构造函数只有一次,析构两次呢#include iostreamusing namespace stdclass A{public:int dataA()

为什么构造函数只有一次,析构两次呢
#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} 

热点排行