C++中拷贝构造的调用时机、浅拷贝和深拷贝
C++中拷贝构造函数的调用时机
- 用一个对象初始化另一个对象
- 对象以值传递的方式传给函数参数
- 函数局部对象以值传递的方式从函数返回
#define _CRI_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class Person
{
public:
Person()
{
cout << "默认构造函数调用" << endl;
}
Person(int a)
{
cout << "有参构造函数调用" << endl;
}
Person(const Person& p)
{
cout << "拷贝构造函数调用" << endl;
}
~Person()
{
cout << "析构函数调用" << endl;
}
int m_Age;
};
//拷贝构造调用的时机
//1.用已创建好的对象来初始化新的对象(常用)
void test01()
{
Person p1;
p1.m_Age = 10;
Person p2(p1);
}
//2.以值传递的方式给函数参数传值
//值传递都是拷贝构造,出现新数据,所以void doWork(Person &p1)效率更高
void doWork(Person &p1) //Person p1=Person(p)
{
}
void test02()
{
Person p;
p.m_Age = 10;
doWork(p);
}
//3.以值方式返回局部对象,用的不多
Pe