Effective C++读书笔记(1)

本文详细解释了C++中构造函数的使用,包括定义式的作用、explicit关键字如何防止非预期的类型转换,以及拷贝构造函数与赋值操作符的区别。此外还介绍了函数参数为值传递时调用拷贝构造函数的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读

1.定义式是编译器对此对象拨发内存的地点。

2.explicit声明的构造函数可被用于禁止编译器执行非预期的类型转换。

注:对于单个参数的构造函数定义了从该形参类型到该类型的一个隐形转换。explicit只对构造函数起作用,用来抑制隐式转换。

 class   A   {   
          A(int   a);   
  };   
  int   Function(A   a);   
  当调用   Function(2)   的时候,2会隐式转换为A类型。这种情况常常不是程序员想要的结果,所以,要避免之,就可以这样写:   
  class   A   {   
          explicit   A(int   a);   
  };   
  int   Function(A   a);   
  这样,当调用   Function(2)   的时候,编译器会给出错误信息(除非   Function   有个以   int   为参数的重载形式),这就避免了在程序员毫不知情的情况下出现错误。

3.copy构造函数和copy赋值操作符的区别是当有新对象被定义时必会调用copy构造函数,而没有新对象产生时会调用copy赋值操作符。

4.当函数参数为值传递的类型时调用的是该类型的copy构造函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值