C++ 外部存储类生命周期

标签 c++ extern storage-class-specifier

我是一名 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; }

这个是动态分配的,一直存在到Foodelete为止:

int main() { Foo *foo = new Foo; }

在每种情况下,y 都有程序生命周期。

关于C++ 外部存储类生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4603271/

相关文章:

c++ - 我将 ASCII 单词转换为数字,但无法解码它们。如何转换 1=a、2=b、28=ab 等? (伪代码好吧)

c++ - 如何使用 std::unordered_map::insert_or_assign

c - c中静态函数的范围

c - 每个变量在 C 中都有一个存储类吗?

c++ - 阻止在VS2017 C++编辑器中输入冒号时光标跳到行尾

c++ - 使用 Char 数组的 ROT13 实现

c++ - 无法编辑外部变量

c - 为什么我得到 "undefined reference"- 变量标记为 'extern' 的错误?链接器问题?

c++ - 在 C 或 C++ 中使用 extern 包含文件

c++ - 为什么我们不能一直使用C中的register存储类呢?