c++ 拷贝构造函数

拷贝构造函数

#include <iostream>

using namespace std;

class People
{
public:
	People() = default;

	//People(const People &p1) = delete;  //将默认拷贝构造删除,无法调用拷贝构造

	People(const People &p1)			  //重写拷贝构造函数
	{
		cout << "拷贝构造函数调用" << endl;
		a = p1.a;
		b = p1.b;
	}

	int a = 10;
	int b = 20;
};

void display(People p)
{
	cout << "display() a=" << p.a << " b=" << p.b << endl;
}


//类默认有一个拷贝构造函数,拷贝构造也可以进行重载
//函数有副本机制,会调用拷贝构造
//类作为参数传递时,原则要传递引用,引用不会调用拷贝构造函数
//类实例作为返回值时,也会调用拷贝构造函数

int main(int argc, char *argv[])
{
	People people1;

	cout <<"people2是否调用拷贝构造:"<< endl;
	People people2(people1);  //调用拷贝构造
	cout << "a=" << people2.a << " b=" << people2.b << endl;

	cout << "==============================" << endl;

	cout << "查看display是否调用拷贝构造:" << endl;
	display(people1);

	cin.get();
	return 0;
}

c++拷贝构造函数分析

秋风 2018-03-18