C++中建構函式後的初始化列表

遠方的楓葉發表於2015-05-31
本人程式設計時遇到建構函式後面的的冒號不知其意,雖查書一看,簡析C++中冒號和雙冒號的用法進行了介紹

一、單冒號

(1)表示機構內位域的定義(即該變數佔幾個bit空間)

程式碼示例如下:

typedef struct  _Test
{          
      unsigned char a:4;          
      unsigned char c;
} Test; 


(2)建構函式後面的冒號起分割作用,是類給成員變數賦值的方法,初始化列表,該初始化列表用於以下三種情況

         1:初始化const成員
         2:初始化引用成員
         3:當呼叫基類的建構函式,而它擁有一組引數時

程式碼如下:

class  _Test{          
    _Test() : y(0xc0) 
   {
       //...
   }

};


(3) public:和private:後面的冒號,表示後面定義的所有成員都是公有或私有的,直到下一個"public:”或"private:”出現為止。"private:"為預設處理。
(4)類名冒號後面的是用來定義類的繼承。

程式碼如下:

class 派生類名 : 繼承方式   基類名
{
    派生類的成員
};


繼承方式:public、private和protected,預設處理是private


二、雙冒號(::)用法
(1)表示域操作符
           當在類外定義的時候成員的時候會在這些成員前面加上   類名::  ,以表示其所屬類

           在引用靜態成員時會用到,形如:類名::靜態成員
(2)直接用在全域性函式前,表示是全域性函式
          有VC程式設計的同學你會發現,在VC裡,你可以在呼叫API 函式時,在API函式名前加::,加了::代表是全域性函式,呼叫API全域性函式也可以不加,但是如果你的VC程式裡有與全域性函式同名的自己定義的函式,為了加以區分,我們在全域性函式前加上::



相關文章