拷贝构造函数解析

  • 拷贝构造函数的形式 T::T(const T&)或者 T::T(T&)
  • 默认的拷贝构造函数是T::T(const T&)
  • 拷贝构造函数是所有类的隐式定义函数。
class CTest {
public:
CTest(int i);
virtual ~CTest();
CTest(const CTest&);
private:
CTest& operator=(const CTest&); } ;

例1:
//采用默认的拷贝构造函数构造t1, 而且由于是针对临时对象CTest(1)的拷贝构造
//此处省略了对其的拷贝构造.拷贝构造函数可以不定义。
CTest t1 = CTest(1);
CTest t1(1); // 和上例效果相同.
CTest t1(CTest(1)); // 和上例效果相同.

例2:
CTest t2;
CTest t1(t2); // 采用拷贝构造函数, 而且拷贝构造函数必须定义否则链接错误.

例3:
CTest t1;
t1 = CTest(1); //采用默认的拷贝赋值函数初始化t1

例4:
如果拷贝构造函数声明为私有,则例1CTest t1 = CTest(1); 出现编译错误。原因是虽然临时对象的构造省略但是其相关的语义需要尊重。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值