struct static member意思/定义

use*_*942 1 c++ static struct static-members visual-c++

struct a{static int z;}l;
(a is declared at file scope)    
Run Code Online (Sandbox Code Playgroud)

我无法使用初始化列表初始化z.静态结构成员是什么意思?

z(名称)也有外部链接和公共访问吗?

(我认为这意味着你给它的文件范围和组它下(并且经过对象的公共访问)?..为什么不能我初始化?)

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

Lih*_*ihO 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;
}
Run Code Online (Sandbox Code Playgroud)

输出3 4.


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

"如果我在一个类中有一个静态结构成员呢?"
唯一的区别是,在定义的成员class都是private在默认情况下,不象struct,它在哪里public.