21xrx.com
2024-12-27 06:13:46 Friday
登录
文章检索 我的文章 写文章
C++类成员变量初始化顺序问题
2023-06-24 05:10:38 深夜i     --     --
C++ 成员变量 初始化 顺序

C++类成员变量的初始化顺序是一个常见的问题,也是一个容易被忽略的问题。在一个类定义中,成员变量的初始化顺序并不是根据它们在类中的定义顺序来决定的。相反,它会根据以下规则来确定:

1. 首先,会按照它们的声明顺序来初始化非静态成员变量。这意味着,如果类中定义了两个非静态成员变量A和B,且A在B之前声明,那么A会比B先初始化。

2. 其次,会按照它们在类中的定义顺序来初始化静态成员变量。这意味着,如果类中定义了两个静态成员变量A和B,且A在B之前声明,那么A会比B先初始化。

3. 最后,会按照构造函数初始化列表中的顺序来初始化所有的成员变量,而不是按照它们在类中的声明或者定义顺序来初始化。这意味着,如果类中定义了两个成员变量A和B,且构造函数中先初始化了B,那么B会先被初始化。

需要注意的是,在初始化一个成员变量时,它所依赖的其他成员变量必须已经被初始化。如果一个成员变量尝试访问另一个尚未初始化的成员变量,那么就会导致未定义的行为。

总之,虽然C++类成员变量的初始化顺序有一定的规则,但是我们在编写程序时仍然需要注意这个问题,避免出现不可预知的行为。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复