類的靜態資料成員宣告 定義 初始化

2021-07-10 23:44:03 字數 533 閱讀 3955

在c++中,類的靜態成員(static member)必須在類內宣告,在類外初始化,像下面這樣。

class a

;int a::count = 0 ; // 類外初始化,不必再加static關鍵字

為什麼?因為靜態成員屬於整個類,而不屬於某個物件,如果在類內初始化,會導致每個物件都包含該靜態成員,這是矛盾的。

能在類中初始化的成員只有一種,那就是靜態常量成員。

這樣不行

class a

;

這樣也不行

class a

;

但是這樣可以

class a

;

總結:

1、const 

資料成員不能在類內定義時初始化,在類外初始化也不行。

通常通過建構函式初始化。

2、static 資料成員不能在類內初始化,在類外初始化。因為static成員不屬於任何乙個物件。

3、static const 資料成員可以在類內初始化。但一半僅僅限於整形。

c 宣告 定義 初始化

簡述 語言型別 物件 變數 型別是乙個抽象,規定物件的時空排布 物件是乙個實體。具有屬性和方法 操作 物件屬性和方法,是否可見,可索引,可修改。變數是實體名稱或者容器名稱,總之是個名稱。介於抽象模型和物理實現之間。c中應該是編譯器為物件方法屬性等所分配的具有空間時間特性的記憶體的名字。工具編譯器 預...

C 宣告 定義 初始化

告訴編譯器某個東西的名稱和型別,但略去細節,比如 extern int x 物件object宣告 std size t numdigits int number function宣告 class widget class宣告 templateclass graphnode 模板template宣告函...

初始化 賦值 宣告 定義

初始化和賦值是兩個完全不同的操作 列表初始化 用花括號 來初始化變數,列表初始化下,如果損失精度會編譯錯誤,正常初始化則是warning 常見初始化方法 int a 1 int b int c 3 int d double e int f e warning int g error 預設初始化 定義...