static成員必須在類外初始化

2022-07-27 03:09:11 字數 477 閱讀 3778

**:

一:為什麼靜態成員不能在類內初始化

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

classa;

int a::count = 0 ; //

類外初始化,不必再加static關鍵字

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

二:什麼在類內初始化

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

class

a;

以下是兩種錯誤的初始化:

class

a;

const常量在初始化列表中初始化

class

a;

s

C 之靜態成員 初始化必須在定義外

如題 一般情況下,c 定義乙個類會用2個檔案,class.h 和 class.cpp 使用的時候一般會讓函式在.h中宣告,然後.cpp中定義,而成員資料一般在建構函式或者.h中就初始化了。然而,static修飾的靜態資料成員,必須在類的宣告以外來初始化。也就是說如下 h class cls cpp ...

C 之static類成員,static類成員函式

0.static修飾類中成員,表示類的共享資料 1.static類成員 在c primer裡面說過,static類成員不像普通的類資料成員,static類資料成員獨立於一切類物件處在。static類資料成員是與類關聯的,但不與該類定義的物件有任何關係。這句話什麼意思?就是static不會想普通類資料...

必須在類初始化列表中初始化的幾種情況

1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti intp int j int main int argc char argv 究其因 const物件或引用只能...