2013-10-19 113 views
0
struct a{static int z;}l; 
(a is declared at file scope)  

我不能使用初始化列表初始化的Z。靜態結構成員是什麼意思?結構靜態成員含義/定義

確實Z(名)有外部鏈接和公共訪問呢?

(我認爲這意味着你給它的文件範圍和組它下(並且經過對象的公共訪問)?..爲什麼不能我初始化?)

而且....什麼?如果我有一個類中的靜態struct成員?

回答

12

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

+0

什麼???????????? – user2892942

+0

什麼的是有那麼點? – user2892942

相關問題