1. 静态成员最先构造,按照静态成员初始化顺序,不是类里面的声明顺序

2. 父类构造

3. 非静态成员构造,按照类成员声明顺序,不是逗号初始化成员顺序

4. 自身构造函数

Demo:

class TestA
{
public:
TestA(){
std::cout << "TestA()" << std::endl;
}
}; class TestB
{
public:
TestB(int b) {
std::cout << "TestB()" << std::endl;
}
}; class TestC
{
public:
TestC(int c) {
std::cout << "TestC()" << std::endl;
}
}; class TestD
{
public:
TestD() {
std::cout << "TestD()" << std::endl;
}
}; class TestE
{
public:
TestE() {
std::cout << "TestE()" << std::endl;
}
}; class Father
{
public:
Father() {
std::cout << "Father()" << std::endl;
}
~Father() {
std::cout << "~Father()" << std::endl;
}
}; class SonA : public Father
{
public:
SonA(int num1, int num2)
:m_C(num1)
,m_B(num2)
{
std::cout << "SonA()" << std::endl; //先Father,最后Son
}
~SonA() {
std::cout << "~SonA()" << std::endl;
}
public:
static TestD m_gD;
static TestE m_gE; private:
TestA m_A;
TestB m_B;
TestC m_C; //member声明顺序 A,B,C,逗号初始化顺序忽略
}; TestE SonA::m_gE;
TestD SonA::m_gD; //static初始化顺序 E,D int main()
{
SonA son(1, 2);
}

输出:

TestE()
TestD()
Father()
TestA()
TestB()
TestC()
SonA()

  

c++构造顺序的更多相关文章

  1. C++类继承中,基类/当前对象属性/当前对象的构造顺序

    [1]中提到,规范的派生类构造函数三个要点: 首先创建基类对象 应通过成员初始化列表,创建基类对象 应该初始化本派生类新增的成员变量 那在构造派生类实例的过程中,其基类(以及多继承的时候多个基类)/当 ...

  2. 10.C++-构造函数初始化列表、类const成员、对象构造顺序、析构函数

    首先回忆下,以前学的const 单独使用const修饰变量时,是定义的常量,比如:const int i=1; 使用volatile const修饰变量时,定义的是只读变量 使用const & ...

  3. C/C++ 多继承{虚基类,虚继承,构造顺序,析构顺序}

    C/C++:一个基类继承和多个基类继承的区别 1.对多个基类继承会出现类之间嵌套时出现的同名问题,如果同名变量或者函数出现不在同一层次,则底层派生隐藏外层比如继承基类的同名变量和函数,不会出现二义性, ...

  4. c++ 类的构造顺序

    在单继承的情况下,父类构造先于子类,子类析构先于父类,例: class A { public: A() { cout << "A" << endl; } ~ ...

  5. C++解析(12):初始化列表与对象构造顺序、析构顺序

    0.目录 1.类成员的初始化 2.类中的const成员 3.对象的构造顺序 3.1 局部对象的构造顺序 3.2 堆对象的构造顺序 3.3 全局对象的构造顺序 4.对象的析构顺序 5.小结 1.类成员的 ...

  6. 快学Scala 第二十课 (trait的构造顺序)

    trait的构造顺序: 首先调用超类构造器 特质构造器在超类构造器之后,类构造器之前执行 特质从左向右被构造 每个特质当中,父特质先被构造 如果多个特质共有一个父特质,而那个父特质已经被构造,则不会被 ...

  7. C++ 对象构造顺序、构析函数、临时对象。

    对象的构造顺序: 1.对于局部对象,构造顺序是根据程序执行流进行构造,从上到下. #include <stdio.h> class Test { int mi; public: Test( ...

  8. C++中对象的构造顺序

    1,C++ 中的类可以定义多个对象,那么对象构造顺序是怎样的? 1,很多的 bug 是由对象的构造顺序造成的,虽然它不难: 2,对象的构造往往和构造函数牵涉在一起,构造函数的函数体又可能由非常复杂的程 ...

  9. Java语法专题1: 类的构造顺序

    合集目录 Java语法专题1: 类的构造顺序 问题 下面的第二个问题来源于Oracle的笔试题, 非常经典的一个问题, 我从07年开始用了十几年. 看似简单, 做对的比例不到2/10. 描述一下多级继 ...

随机推荐

  1. vue-router的hash模式和history模式,

    hash模式背后的原理是onhashchange事件,可以在window对象上监听这个事件: window.onhashchange = function(event){ console.log(ev ...

  2. 3. ClustrixDB 操作

    测试数据库 一. 测试分片,存储信息 测试前: clxm@p2cn1uclx101m_10.248.100.241 /data]$ clx statCluster Name: cle69e350c2c ...

  3. java实现视频断点上传文件

    一.概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载.在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了.一般断点下载时才用到Range和Content- ...

  4. gdal test

    https://blog.csdn.net/hb_programmer/article/details/81807699 gdal/ogr是一个光栅和矢量地理空间数据格式的翻译库,由开源地理空间基金会 ...

  5. js基本数据类型+判断数据类型方法

    摘要:不管是什么类型的,Object.prototype.toString.call();都可以判断出其具体的类型,简单基本类型(String.Number.Boolean.Null.Undefine ...

  6. 初识linux命令

    1. type: 查看是外部命令/内部命令 外部命令 有存放地址信息 内部命令 is a shell builtin 2.file 查看文件的编码方式 file /sbin/ifconfig 编译执行 ...

  7. jdk环境配置(windows版)

    JAVA_HOME C:\Program Files\Java\jdk1.7.0_80 Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; CLASSPATH .;%J ...

  8. 【转】UNITY中相机空间,投影空间的正向问题

    原文链接1:https://www.cnblogs.com/wantnon/p/4570188.html 原文链接2:https://www.cnblogs.com/hefee/p/3820610.h ...

  9. java执行命令行,以及解决卡死问题

    java可以执行本地命令行,但是有一个坑,命令执行后,已经执行完毕,但是卡死不返回,这是因为: 命令会返回两个输出流,正确的返回流,和错误的返回流 一般程序的做法是先循环读正确的返回流,再读错误的返回 ...

  10. spring boot官方配置

    #BANNER banner.charset = UTF-8 #横幅文件编码.banner.location = classpath:banner.txt #横幅文件位置.banner.image.l ...