问题及代码:
#include <iostream>
using namespace std;
class AA
{
public:
AA(int i,int j)
{
A=i;
B=j;
cout<<"Constructor\n";
}
AA(AA &obj)
{
A=obj.A+1;
B=obj.B+2;
cout<<"Copy_Constructor\n";
}
~AA()
{
cout<<"Destructor\n";
}
void print()
{
cout<<"A="<<A<<",B="<<B<<endl;
}
private:
int A,B;
};
int main()
{
AA a1(2,3); //执行a1的带参数的构造函数 a1.A=2,a1.B=3, 输出Constructor\n
AA a2(a1); //执行一次复制构造函数 a2.A=3,a2.B=4 输出Copy_Constructor\n
a2.print(); //输出 A=3,B=4
AA *pa=new AA(5,6);//new一个新的对象,执行带参数的构造函数 (*pa).A=5,(*pa).B=6, 输出Constructor\n
pa->print(); //输出 A=5,B=6
delete pa; //执行pa的析构函数,输出Destructor
return 0; //执行a1,a2的析构函数,输出Destructor\n
//Destructor\n
}
运行结果:
知识点总结:
复制构造函数的运行机制