主题:C++复制构造函数的问题
#include <iostream>
using namespace std;
class A
{
public:
~A(){cout<<"析构\n";}
A(){w=1;cout<<"构造\n";}
A(A &a){cout<<"复制构造函数\n";w=a.w;}
int get()const{return w;}
A fget(){return *this;}
private:
int w;
};
int main()
{
A a;
cout<<a.get()<<endl;
A c=a.fget();
return 0;
}
当有定义析构函数是输出调用了一次复制构造函数
请高手解释为什么会这样?为什么不是都调用一次?
using namespace std;
class A
{
public:
~A(){cout<<"析构\n";}
A(){w=1;cout<<"构造\n";}
A(A &a){cout<<"复制构造函数\n";w=a.w;}
int get()const{return w;}
A fget(){return *this;}
private:
int w;
};
int main()
{
A a;
cout<<a.get()<<endl;
A c=a.fget();
return 0;
}
当有定义析构函数是输出调用了一次复制构造函数
构造 1 复制构造函数 析构 析构 Press any key to continue |
#include <iostream>
using namespace std;
class A
{
public:
//~A(){cout<<"析构\n";}
A(){w=1;cout<<"构造\n";}
A(A &a){cout<<"复制构造函数\n";w=a.w;}
int get()const{return w;}
A fget(){return *this;}
private:
int w;
};
int main()
{
A a;
cout<<a.get()<<endl;
A c=a.fget();
return 0;
}
当注释析构函数是输出显示调用两次复制构造函数
构造 1 复制构造函数 复制构造函数 Press any key to continue |
请高手解释为什么会这样?为什么不是都调用一次?