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;
}
秋风
2018-03-18