调用时机:
1、使用一个已经创建完毕的对象来初始化一个新对象
class person
{
int age;
public:
person()
{
cout<<"默认构造函数"<<endl;
}
~person()
{
cout<<"析构函数"<<endl;
}
person(int a)
{
age=a;
cout<<"带参构造函数"<<endl;
}
person(const person &p)
{
age=p.age;
cout<<"拷贝构造函数"<<endl;
}
};
void test1()
{
person p1(20);
person p2(p1);
}
该代码把p1的数据拷贝到p2,输出结果为:
带参构造函数
拷贝构造函数
析构函数
析构函数
2、值传递方式给函数参数传值
void dowork(person p)
{}
void test2()
{
person p;
dowork(p);
}
输出结果为:
默认构造函数
拷贝构造函数
析构函数
析构函数
值传递过程中调用拷贝构造函数,不会影响原本的数据
3、值方式返回局部对象
person dowork2()
{
person p1;
return p1;
}
void test3()
{
person p = dowork2();
}
输出结果为:
默认构造函数
拷贝构造函数
析构函数
析构函数