拷贝函数、构造函数

Person (const Person &p)    // 必须要加const,而且传入的必须是引用。加const就是说p是无法进行修改。
{
	// 将p身上的所有成员复制给本身
	m_Age = p.m_Age;
}
实例化对象时,不要加括号,除非要传入参数。不然会出错的。因为编译器会认为这是在创建一个函数。
Person p1();    // 返回的是Person类,函数名叫p1
Person p1;      // 这样才是对的
Person (10)  // 创建了一个匿名对象,这个对象在这一句执行完之后就被删除
// 不要利用拷贝函数创建匿名对象
Person (p3)  //编译器会认为Person (p3) 就是Person p3;
Person p1 = Person (p3); // 等价于 Person p1 = p3;
Person p1(p3);

什么时候会调用拷贝构造函数
1、使用一个已经存在的对象初始化一个新的对象

Person p1;
Person p2(p1);

2、值传递给某个函数

void fun1(Person p)
{
// 当调用这个函数时,其实会复制一个p的副本传进这个函数内进行运算
}

3、值的方式返回局部对象

Person fun1()
{
	Person p1;
	return p1;   // 这里返回的也不是p1自己,而是复制了个副本传出去。
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值