在說明這四個關鍵字之前,我想就class之間的關係做一個簡單的定義,對於繼承自己的class,base class可以認為他們都是自己的子女,而對於和自己一個目錄下的classes,認為都是自己的朋友。
private, protected, public 為C++類別中的存取設定
其用法如下
private
private宣告的函式或變數 只能由自己類別所使用
不能由外部使用 連繼承自己的類別也不能使用
以下為合法使用法
其用法如下
private
private宣告的函式或變數 只能由自己類別所使用
不能由外部使用 連繼承自己的類別也不能使用
以下為合法使用法
class A { private: bool m_bFlag; public: void pub_funA() { m_bFlag = true; }; } |
承上 以下為錯誤使用法
class B : public A { public: void pub_funB() { m_bFlag = false; }; } |
類別B繼承A但仍舊不能使用其private成員
以下也是錯誤的
以下也是錯誤的
A obj_a; obj_a.m_bFlag = false; |
protected
protected 就比 private 鬆了一點 繼承類別准許存取 protected 成員 但外部使用仍然禁止
以下為合法使用法
class C { protected: int m_nValue; } class D : public C { public: void pub_funC() { m_nValue = 0; }; } |
以下這樣用是錯誤的
C obj_c; obj_c.m_nValue = 1; |
當然下面這樣也是錯的
C *pobj_c; pobj_c->m_nValue = 1; |
public
public就不用說了 就是怎麼用都可以
作用域 當前類 同一package 子孫類 其他package
public OK OK OK OK
protected OK OK OK x
friendly OK OK × x
private OK × ×
不寫時默認為friendly
沒有留言:
張貼留言