繁体   English   中英

类之外的c ++,可变声明的顺序是否被保证是构造的顺序?

[英]c++ outside of a class, is the order of varaible declaration garanteed to be the order of construction?

可以说我有代码:

main.cpp:

my_obj1 obj1("hello obj1");
my_obj2 obj2("hello obj2");

int main()
{
    :
    :
}

我想知道obj1是否总是保证在obj2之前创建。

如果我认为这两个对象在课堂上都可以,那将是正确的。

是的, 在单个转换单元内 ,保证全局变量的初始化按其定义的顺序进行排序。 这意味着obj1被保证在obj2之前被初始化,并在obj2之后被销毁。

3) 有序的动态初始化 ,它适用于所有其他非本地变量:一个翻译单元内,这些变量初始化总是测序在他们的定义出现在源代码的确切顺序。

顺便说一句:类成员的初始化顺序还取决于它们的声明顺序,这与您在成员初始化程序列表中指定它们的方式无关。

3)然后,按类定义中的声明顺序初始化非静态数据成员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM