每次调用函数时静态对象初始化

问题描述 投票:0回答:1

我的代码中有一个很重的对象,它是静态的。我想知道是否将成员变量的初始化移到构造函数之外,它们是每次执行还是一次执行?

struct test
{
    int a;
    int b;
};
void foo() {

    static test T;
    T.a=123;
    T.b=341;

}

int main()
{
    foo();
    foo();
    foo();
}

Will

T.a=123;
T.b=341;

每次调用foo()都会执行?

c++ object static initialization
1个回答
0
投票

这不是初始化,这是分配,是的,它将。仅创建对象(包括初始化)一次。

static test T = {123,341}; //happens only once.
© www.soinside.com 2019 - 2024. All rights reserved.