测试.h
class Test
{
static int i;
};
测试.cpp
int Test::i = 1;
我知道通常我们会像上面那样初始化一个静态成员。静态成员在函数 main
运行之前被初始化。
我的问题是:
是否可以在函数 main
运行后 初始化静态成员?像这样:
int main()
{
// do something
// initialize the Test::i here
}
最佳答案
不,不可能初始化它,但是你应该没有理由不能只调用一个为i
赋值的静态setter函数> 在运行时。这是最好的方法。
或者您也可以让构造函数始终初始化变量:
#include <iostream>
class Test
{
private:
static int i;
public:
Test()
{
i=2;
}
void print_i (void)
{
std::cout << i << std::endl;
}
};
int Test::i = 1;
int main()
{
Test test;
test.print_i(); // will print 2
}
关于c++ - 是否可以在运行main之后初始化一个静态成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30048154/