拷贝函数调用的时机
首先定义一个person类,定义一个年龄的属性,分别写出其默认构造函数、有参构造函数、拷贝构造函数和析构函数,代码如下:
class Person
{
public:
Person()//默认的构造函数
{
cout<<"默认构造函数"<<endl;
}
Person(int age)
{
m_age = age;
cout<<"有参构造函数"<<endl;
}
Person(const Person &p)
{
m_age =p.m_age;
cout<<"拷贝构造函数"<<endl;
}
~Person()//默认的析构函数
{
cout<<"析构函数"<<endl;
}
int m_age;
};
1.使用一个已经创建完毕的对象来初始化一个新对象
void test01()
{
Person p1(20);
Person p2(p1);
}
此时的输出结果为:
有参构造函数
拷贝构造函数
p2的年龄为:20
析构函数
析构函数
2.值传递给函数参数赋值
void chuandi(Person p)
{
}
void test02()
{
Person p;
chuandi(p);
}
输出结果为:
默认构造函数
拷贝构造函数
析构函数
析构函数
3.值方式返回局部对象
Person work()
{
Person p1;
return p1;
}
void test03()
{
Person p = work();
}
输出结果为:
默认构造函数
拷贝构造函数
析构函数
析构函数
注意📢:
默认构造-----调用的是Person work()中Person p1的构造函数
拷贝函数-----Person p = work();
第一个析构函数----Person work()中的Person p1的析构函数
第二个析构函数----void test03()中Person p的析构函数