电贺
bool SomeClass::Function( bool thankYou = true )
{
static bool justAbool = false;
// Do something with justAbool;
...
}
Run Code Online (Sandbox Code Playgroud)
有搜索,但我找不到任何关于这个除了全局变量或成员函数本身.
上面做了什么,即发生了什么,在离开独家新闻之后,只有阿博尔保持其价值?或者再次进入勺子时它会再次"记住"这个值吗?
谢谢
小智 25
该变量justAbool仅初始化为false一次,并在输入函数之前进行初始化.离开函数范围后,将记住该值.值得注意的是,该值也将像静态成员变量一样由所有实例共享SomeClass.justAbool如果创建类的新实例然后再次调用该函数,则不会重新初始化该变量.
CB *_*ley 13
static当应用于局部变量时,给出该变量的静态存储持续时间.这意味着它justAbool的生命周期持续到程序的末尾,而不是函数调用的结束.它的范围保持不变,只有在声明出现后才能通过函数中的名称访问它.
justAbool将= false在第一次调用函数时初始化(使用提供的初始化程序).此后它将保留其先前的值,再次调用该函数时不会重新初始化.
以下是有关存储持续时间和使用寿命的更全面的详细信息,并参考了该标准.
如果对象具有静态存储持续时间,则意味着对象的存储持续到程序的持续时间(从开始到结束).(3.7.1 [basic.stc.static])
作为一个bool没有非平凡构造函数的类型,它的生命周期反映了它的存储,即它从程序的开头到结尾.(3.8 [basic.life])
具有静态存储持续时间的所有对象(包括本地对象)在任何其他初始化之前都是零初始化的.(6.7/4 [stmt.decl])[对于带有初始化程序的本地对象,这是相当学术性的,因为在达到声明之前无法读取它们的值.
具有使用常量表达式初始化的静态存储持续时间的POD类型的本地对象在其输入块之前被初始化,否则当控制通过其声明时初始化具有静态存储持续时间的本地对象.(再次6.7/4)
实现是许可者,但不是必需的,在某些情况下执行早期初始化.
| 归档时间: |
|
| 查看次数: |
5091 次 |
| 最近记录: |