C++构造函数的执行顺序

马谦马谦马谦 2018年3月15日20:20:04 发表评论
文章最后编辑于:2018-5-4 21:54:40

一、构造函数的执行规则

C++构造函数的调用顺序为:

  • 如果类中包含静态成员变量,先执行静态成员变量的构造函数。
  • 如果类是派生类,则先执行基类的构造函数。同样如果基类也是一个派生类,它也要先执行基类的构造函数。
  • 执行成员变量中的构造函数,根据定义的顺序来,先执行类内初始化,再执行列表初始化。
  • 执行本类的构造函数。

1.1 测试代码

在主函数中执行CTB b,程序将会输出:

二、静态成员变量

当类中含有静态成员的时候,首先会执行静态成员变量的构造函数。

准确来说不能说是先执行静态成员的构造函数,而是在程序一开始就会执行静态成员的构造函数,因为静态变量都是一开始就分配好内存了,这个操作在b创建之前。

修改test.h的代码为:

main函数中的内容:

程序输出:

可见静态成员的99create obj b之间就已经执行了。

本文共执行60次查询,耗时0.341秒!
历史上的今天
三月
15
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: