`
yangyou230
  • 浏览: 1645035 次
文章分类
社区版块
存档分类

类的成员变量的初始化顺序问题

 
阅读更多

成员变量的初始化顺序只与变量在类中的声明顺序有关,与在构造函数中的初始化列表的顺序无关。

class Test

{

private :

int n1;

int n2;

public:

Test();

};

Test::Test() : n2(2), n1(1)

{};

当查看相关汇编代码时,就能看到正确的初始化顺序了。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。

从全局看,变量的初始化顺序就应该是:

① 基类的静态变量或全局变量

② 派生类的静态变量或全局变量

③ 基类的成员变量

④ 派生类的成员变量

分享到:
评论

相关推荐

    关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍

    详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序

    C++类成员和数据成员初始化总结

    C++类成员和数据成员初始化总结 C++为类中提供类成员的初始化列表 类对象的构造顺序是这样的: ...类里面的任何成员变量在定义时是不能初始化的。 2.一般的数据成员可以在构造函数中初始化。

    C++ 成员变量的初始化顺序问题详解

    C++ 成员变量的初始化顺序问题详解 问题来源: 由于面试题中,考官出了一道简单的程序输出结果值的题:如下, class A { private: int n1; int n2; public: A():n2(0),n1(n2+2){} void Print(){ cout <&...

    Qt变量初始化,为何要与声明的次序保持一致?-CSDN论坛1

    论坛首页 (/home)论坛牛人 (/rank)论坛地图 (/map)的顺序应该是按照你成员声明顺序初顺序应该是按照你成员声明顺序初始…例化子类的对象的时候会调

    关于C++中构造函数初始化成员列表的总结

     初始化列表的初始化顺序是依据类成员变量定义的顺序来决定的。 3.关于static const是否应该在初始化成员列表中初始化?  static const为全局静态常量,全局的意思是该变量属于整个类而非某个类实例,所以不能再...

    Java类中各成员初始化的顺序

    了解java中类各个成员的初始化顺序是非常重要的,这样你可以对类有全局的认识。不说太多,直接看下面的例子 class Father { static{ System. out.println("父类静态代码块初始化" ); } { System. out.println...

    Java类初始化顺序

    所有代码块是从上往下顺序执行的,所以代码块里面使用到的变量如果在块下面初始化会有问题 执行构造方法中内容。 所以看见的空构造方法,只能说第三部没有需要执行的内容。 下面举例子 public class TestClass { ...

    java对象初始化顺序验证示例

    以下这段小程序对调用对象构造函数时,父类构造函数、成员变量初始化函数,以及非静态初始化块调用顺序进行验证,不考虑静态成员及静态初始化块

    Java开发者文档,分享日常学习的一些小知识点 .rar

     未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。  2、继承时,对象的初始化过程  (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。  (2) 主类静态...

    JAVA基础知识精华总结 收藏

    未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。 2、 继承时,对象的初始化过程 (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。 (2) 主类静态成员的...

    c++ 构造函数的初始化列表

    首先,运行下图中的C++代码,输出是...在C++中,成员变量的初始化顺序与变量在类型中的声明顺序相同,而与它们在构造函数的初始化列表中的顺序无关。因此在这道题中,会首先初始化n1,而初始n1的参数n2还没有初始化,是

    纯C语言实现顺序表附加源码

    2. 初始化顺序表:初始化顺序表时,将顺序表的长度设置为0。 3. 插入元素:在顺序表的指定位置插入一个元素。插入元素时,需要将插入位置之后的元素依次后移,然后将要插入的元素放入指定位置。 4. 删除元素:删除...

    J2SE(javaSE基础知识).doc

    java简介、java不同版本、java特点、jdk、第一个程序、jdk、jre、jvm、eclipse配置、注释、标识符、变量、数据类型、运算符、分支语句、命名规范、循环语句、数组、main方法、面向对象、成员变量和局部变量、构造...

    Java 基础核心总结 +经典算法大全.rar

    类的初始化 成员初始化 构造器初始化初始化顺序 数组初始化 对象的销毁 对象作用域 this 和 super 访问控制权限继承 多态组合代理 向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 ...

    Google Objective-C Style Guide 中文版

    Google Objective-C Style Guide 中文版 目录 ...Dealloc中应该按声明的顺序处理成员变量 Setters中对NSString进行copy 避免抛出异常 nil的检查 BOOL陷阱 属性 Cocoa模式 委托模式 模型-视图-控制器

    用C++ 实现 简单的反射功能

    在 ClassFactory 类中,使用了一个静态的 map 成员变量来保存注册的类和对应的创建函数,get_map() 函数用来获取这个 map 的引用,避免了初始化顺序的问题。 工厂模式可以有效地解耦客户端代码和对象创建过程,有助...

    QUALCOMM平台BUIW开发文档

     自动化编译问题 111  修改注意的问题 112  启动速度测试 112  空记录启动的时间 112  满记录启动的时间 112  大数据量操作测试 113  载入数据需要的时间 113  删除所有数据需要的时间 113  满...

    Visual C++开发经验技巧宝典(第1章)

    0053 C++类中成员初始化的顺序 19 0054 基类的析构函数应该是虚方法 20 0055 访问限定符分析 21 0056 访问其他类的私有成员函数 21 0057 如何定义友员类 22 1.7 多态 23 0058 纯虚函数的使用 23 0059...

    C++基础及进阶讲解

    ②调用对象成员构造函数的顺序与写在成员初始化列表中的顺序无关,而与对象成员的定义顺序有关,先定义的先调用。如将例10.16中的A行改写为: Line(int x1, int y1, int x2, int y2, int w, int c) : p2(x2, y2),...

Global site tag (gtag.js) - Google Analytics