gpt4 book ai didi

c++ - 静态函数中的非静态数据持续时间

转载 作者:行者123 更新时间:2023-11-28 01:08:52 26 4
gpt4 key购买 nike

我想初始化一个抽象接口(interface)的静态数组。我只是想知道调用静态函数来构建数据是否是一种有效的初始化方法。下面代码中指针指向的数据的生命周期是什么样的?

typedef class FOO {
public:
static const int** array_int;
static const int** array_int_init();

} FOO;

const int** FOO::array_int_init()
{
const int A = 5;
const int B = 6;
const int C = 7;

const int* array_int[] = { &A, &B, &C };

return &array_int[0];
}
const int** FOO::array_int = array_int_init();

此外,在 C++ 规范中查找有关此类行为的细节的最佳方法是什么?我有 N3225=10-0215,但即使查看索引和我发现的内容,我也需要阅读很多内容而没有答案。

最佳答案

您的变量是局部变量,当函数退出时它们将不复存在。如果您需要它们生存,则在函数内将 vars 和 array 声明为 static with

const int** array_int_init()
{
static const int A = 5;
static const int B = 6;
static const int C = 7;

static const int* array_int[] = { &A, &B, &C };

return &array_int[0];
}

这些静态变量的持续时间与程序一样长,并且将在您第一次调用该函数时进行初始化(请注意,在多线程的情况下,如果初始化不像上面的情况那么简单,则需要一些额外的处理)。

关于c++ - 静态函数中的非静态数据持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4591670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com