问个 C++ 类初始化的问题。

2018-03-21 23:46:52 +08:00
 chengluyu

C++ 11 引入的 non-static member initialization,即下面代码展示的。

struct A {
    int x = 7; // non-static member initialization
};

该过程会发生在构造函数调用之前还是之后?在构造函数成员初始化列表执行之前还是之后?

2127 次点击
所在节点    C
4 条回复
alqaz
2018-03-22 00:00:58 +08:00
可能就是之后吧,构造函数初始化列表值会覆盖声明中的赋值。
alqaz
2018-03-22 00:01:29 +08:00
说错了,可能是之前,构造函数初始化列表值会覆盖声明中的赋值。
justou
2018-03-22 00:23:10 +08:00
在构造函数初始化列表中初始化吧(按照成员出现的顺序初始化); 要么提供一个新的值, 没给就默认用声明时给的初始值
http://en.cppreference.com/w/cpp/language/data_members
jmc891205
2018-03-22 10:52:08 +08:00
它不影响成员初始化的顺序啊 成员是按声明的顺序来初始化的
只是构造函数会先去看初始化列表里有没有给值 没给的话就用这个默认值来初始化 x

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/440252

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX