struct static member意思/定义

时间:2013-10-19 18:23:28

标签: c++ visual-c++ static struct static-members

struct a{static int z;}l;
(a is declared at file scope)    

我无法使用初始化列表初始化z。静态结构成员意味着什么?

z(名称)是否也有外部链接和公共访问权限?

(我认为这意味着你给它文件范围并将其分组(并通过对象进行公共访问)?..为什么我不能初始化?)

另外....如果我在一个类中有一个静态结构成员?

1 个答案:

答案 0 :(得分:13)

static / class

struct成员不是特定于class / struct的具体实例的成员。除了一些特殊情况,它必须几乎总是在其中一个编译单元中显式初始化。然后可以使用名称空间来访问它:

#include <iostream>

struct a {
    static int z;
    int i;
} l;

int a::z = 0; // initialization

int main() {
    a::z = 3;
    l.i = 4;
    std::cout << a::z << ' ' << l.i;
    return 0;
}

输出3 4


“我无法使用初始化列表初始化z。”
这是因为初始化列表用于在构造struct时初始化该class的特定实例的成员。静态成员以不同的方式构造和初始化。

“如果我在一个类中有一个静态结构成员?”
唯一的区别是private中定义的成员默认为struct,与public不同,{{1}}。