Tri*_*tos 0 c c++ variables constants
何时以及如何在 C/C++ 中初始化 const 变量?我对特定类型很好奇:
1) const static member of a class
2) function const local variable
3) const global variable
Run Code Online (Sandbox Code Playgroud)
我的意思当然是应用程序运行时而不是初始化它们的源代码方式。
1) 类的 const 静态成员
如果它是一个用常量表达式初始化的简单类型,那么它在静态初始化阶段初始化,在任何用户代码运行之前。
否则,如果它是具有非平凡构造函数的类类型,或者具有非常量初始化器,则在动态初始化阶段对其进行初始化。这将在调用同一翻译单元中定义的任何函数之前发生;但也有潜在的死亡陷阱:
main如果它在不同的单元中定义,它可能不会在开始之前发生。2)函数const局部变量
如果它是静态的,那么它会在程序第一次达到其定义时进行初始化。如果它是自动的,则每次程序到达它时都会对其进行初始化,并在超出范围时将其销毁。
3) const 全局变量
和第一个一样。两者都有静态存储持续时间,因此根据相同的规则进行初始化和销毁。
笔记:
由于您问的是两种不同的语言:在 C 中,没有“动态初始化”这样的东西,并且所有非局部静态变量都在任何用户代码运行之前被初始化。
存在const对何时或如何初始化变量没有影响。
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |