1. 非局部静态变量 - **静态存储持续时间的变量**(包括全局变量、静态变量、静态类成员等)的初始化顺序遵循它们定义的顺序,并且具体顺序还取决于它们所在的编译单元(即源文件)。 - 在同一个源文件中,全局变量按照它们的定义顺序进行初始化。 - 如果变量跨多个文件,它们的初始化顺序取决于文件被编译器处理的顺序,这可能导致所谓的“静态初始化顺序问题”。 2. 局部静态变量 - 局部静态变量(在函数或块内部定义的静态变量)在控制流第一次经过变量定义时初始化,这称为“懒惰初始化”或“按需初始化”。 - 这种方式确保了局部静态变量在第一次使用前被初始化,无论函数何时或从何处被调用。 3. 类成员变量 - **非静态成员变量**的初始化顺序严格按照它们在类中声明的顺序,不论它们在构造函数初始化列表中出现的顺序如何。 - **构造函数初始化列表**中提供的初始化器用于给这些成员变量提供初始值。 4. 继承顺序 - 如果类是从一个或多个类继承而来,基类的构造函数总是在派生类的任何成员初始化之前调用。 - 当有多个基类时,基类的构造调用顺序与它们在类定义中的声明顺序一致。
点赞 评论

相关推荐

牛客网
牛客企业服务