【问题标题】:struct static member meaning/definition [closed]结构静态成员含义/定义
【发布时间】:2013-10-19 18:23:28
【问题描述】:
struct a{static int z;}l;
(a is declared at file scope)    

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    class / struct 的成员static 不是特定于该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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      相关资源
      最近更新 更多