构造函数定义:每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。

需要注意的几点:

1:构造函数不能被声明为const的,当我们创建一个const对象时,直到构造函数完成初始化过程,对象才能真正取得其“常量”属性。因此构造函数在const对象的构造过程中可以向其写值。

2:只有类中没有声明任何构造函数时,编译器才会自动地生成默认构造函数。(依据:如果一个类子某种情况下需要控制对象的初始化,那么该类很可能在所有的情况下都需要控制——摘自c++primer)

3:如果类包含有内置类型或者复合类型的成员,则只有当这些成员全都被赋予了类内的初始值时,这个类才适合于使用合成的默认构造函数。

4:如果类中含有其他类的类型的成员且这个成员的类型没有默认构造函数,那么编译器无法初始化该成员。对于这样的类我们必须自定义默认构造函数,否则该类将没有可用的默认构造函数。

5:=default的含义,在c++11新标准中,如果我们需要默认的行为,那么可以通过在参数列表的后面写上=default来要求编译器生成构造函数。其中,如果=default可以出现在类的内部也可以出现再类的外部。和其他函数一样,如果=default出现在类的内部,则默认构造函数是内联的,如果它在类的外部,则该成员默认情况下不是内联的。

6:类中的成员变量在执行构造函数之前会被默认初始化,所以在初始化列表中初始化成员变量比在构造函数内初始化成员变量效率更高。

7:成员的初始化顺序和初始化列表中的顺序无关,和在类中定义它们的顺序有关。所以要注意初始化列表的使用,防止出现在没有初始化一个变量时,用它初始化另一个变量。这是后会导致不可预知的错误。

8:如果一个构造函数为所有的参数都提供了默认实参,则它实际上也定义了默认构造函数。

9:委托构造函数。一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程,或者说它把它自己的一些职责委托给其他构造函数。

最新文章

  1. 【poj3270】 Cow Sorting
  2. Vmware配置
  3. Android中GPS类及方法简介
  4. 关于markdown需要澄清的一些误解
  5. [转载] C++ string, const char*, char* 之间互相转换
  6. php获取文件创建时间、修改时间
  7. Qt隐藏标题栏
  8. STUN/TURN/ICE协议在P2P SIP中的应用(二)
  9. [转]PHP取整函数:ceil,floor,round,intval的区别详细解析
  10. etl工具,kettle实现了周期
  11. JS正则表达式的test()方法检查汉字
  12. LeetCode 111. Minimum Depth of Binary Tree (二叉树最小的深度)
  13. 致IT之路的先驱者和旅人
  14. Jenkins不同job之间传递参数
  15. the pitfull way to create a uClinux image including gdb.
  16. Easyui入门视频教程 第01集---认识Easyui
  17. __stdcall __cdecl 引起的程序崩溃
  18. Go第十篇之反射
  19. FastAdmin 开发第三天:认识目录
  20. [EffectiveC++]item13:Use objects to manage resources(RAII)

热门文章

  1. 对弈类游戏的人工智能(5)--2048游戏AI的解读
  2. Selenium定位二 --多个元素定位方法 和层级定位方法
  3. JSONObject转换JSON--将Date转换为指定格式
  4. 《统计推断(Statistical Inference)》读书笔记——第3章 统计分布族
  5. mysql特殊处理
  6. linux shell 使用总结
  7. Velocity $ 和$! 区别
  8. Java事务处理全解析(七)—— 像Spring一样使用Transactional注解(Annotation)
  9. duplicate symbols for architecture armv7解决办法
  10. 2013年第四届蓝桥杯C/C++程序设计本科B组决赛