c++關鍵字static的作用

一。面向過程設計時的static

(1)靜態變量

        靜態變量只初始化一次,未初始化的靜態變量會默認初始化爲0。

靜態全局變量:

        靜態全局變量只在本文件可見,外部文件無法訪問

靜態局部變量:

       而靜態局部變量只在定義的作用域內可見,但他們的生存週期都是整個程序運行時期。

 

(2)靜態函數

             靜態函數主要是起到函數的隱藏作用,static修飾的函數只允許在當前文件中使用,在其他文件中無法找到該函數的地址,include也沒用

 

二。面向對象設計時的static

可以用類名:: 直接調用公有靜態數據成員和靜態成員函數

(1)靜態數據成員

         不管這個類有多少實例,這個靜態數據成員只有這一個。

         static修飾的數據成員不在棧上分配內存而在.data段分配內存,

        static修飾的數據成員不能通過調用構造函數來進行初始化,因此static修飾的數據成員必須在類外進行定義,定義的時候可以不初始化。在cpp中定義,在頭文件中聲明。如果在頭文件中定義,當多個文件include這個頭文件時候,會重複定義。

(2)靜態成員函數

           好處就是不需要對象來調用這個函數,直接用類名就行了

          靜態成員函數可以在類內或類外定義,但必須在類內聲明;

         static成員函數沒有this指針,所以不能直接引用非static數據成員或調用類的非static成員函數,只能調用類的static成員數據和static成員函數;

         static成員不是任何對象的組成,不依賴對象的調用所以static成員方法不能被聲明爲const,因爲const只限定該類的對象;

          static成員方法不能同時被聲明爲虛函數。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章