1. 程式人生 > >類中靜態變數

類中靜態變數

        類標頭檔案中聲名的靜態變數,不管是哪種都只是作為聲名,而不是定義,比如說有一個類叫Student,在另外一個類A裡面聲名了一個靜態的Student成員,static Student student,那麼這個student還不能用,因為他只是被聲名了,還需要在類之外定義一下。如果不定義,在連結時會報未解析的外部符號,找不到定義。對於student成員那麼就是要在CPP中定義一下 :

Student A::Student;

以前一直沒清楚這塊,以為類中不能放靜態成員,每次都會放一個靜態指標,然後在建構函式中new一個物件給這個指標。其實是我對這塊理解有誤。類中聲名靜態成員的寫法看似聲名+定義的方法(放到其他地方確實也就是聲名和定義一塊做了)。但是在類中編譯器只會認為他是一個聲名。

這樣做的好處就是,無論根據這個類的標頭檔案被包含了多少次,這個靜態成員永遠只有一個,誰都不想每一次包含這個標頭檔案都會生成一個新的靜態成員,這會跟講靜態變數作為類成員的初衷相悖。