visited 13 states (5.77%)
Create your own visited map of The World or Triposo world travel guide for Android

2014-11-04

private / protected / public 存取修飾詞說明

在說明這四個關鍵字之前,我想就class之間的關係做一個簡單的定義,對於繼承自己的class,base class可以認為他們都是自己的子女,而對於和自己一個目錄下的classes,認為都是自己的朋友。
private, protected, public 為C++類別中的存取設定
其用法如下

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

這些也是同標籤文章 :

沒有留言: