我是一名 C++ 新手,具有 Java 背景。 我想确认以下内容:
我正在通过 Ira Pohl 的剖析阅读C++,书中指出
文件/extern
变量/函数的生命周期是程序的持续时间(这是有道理的,因为变量未在类中声明)。
我想知道的;在类中声明的变量也是这种情况吗?如果不是,如果在类中声明了一个变量,是否会使该变量使用 auto
存储类?
谢谢。
最佳答案
除非声明为 static
,否则类中的成员变量的生命周期与类实例的生命周期相对应。
struct Foo {
int x;
static int y;
};
这个Foo
,以及它的x
,有程序生命周期:
static Foo foo;
这个是auto
:
int main() { Foo foo; }
这个是动态分配的,一直存在到Foo
被delete
为止:
int main() { Foo *foo = new Foo; }
在每种情况下,y
都有程序生命周期。
关于C++ 外部存储类生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4603271/