Applistar

6. 4 アクセス指示子 (Access Specifier)

TOP > 6 SystemCを理解するためのC++入門 > 6. 4 アクセス指示子 (Access Specifier)
  6. 4 アクセス指示子 (Access Specifier)  

6. 4 アクセス指示子 (Access Specifier)

アクセス指示子 (Access Specifier) とは、 クラス定義の中のメンバーについて、他の クラスから参照出来るかどうかを指定するためのものです。

それらには次のものがあります。

アクセス指示子 区分 公開範囲(参照可能元)
public 公開 全体
private 非公開 同一スコープまたはフレンド関数
protected 限定公開 派生クラス
(private) 基底で非公開 基底クラスから継承したメンバ関数

例えば、

SC_MODULE(cpu)      // struct に展開される
{
       ... // 何も指定しないと public
    private
      ... // 次の指定まで private
    public
      ... // 次に指定があるまで public
    protected
      ... // 次の指定まで protected

}

などと書きます。 出現順は問いません。つまりどのような順に書くことも出来ます。

SC_MODULE の説明の部分 にも書いてありますが、struct で定義を始めて、何も指定がない 部分は public の意味になります。

クラスの定義は、 struct で始める他に class で始めることも出来ます。その class の時には 初期値が public でなく private となります。struct と class の違い は、この点だけです。

表の最後に (private) とあるのは、 「基底クラスで private とされたもの」を指し、それは 基底クラスで定義されているメンバ関数が派生クラスに継承されて いる中でのみ参照可能という分類になります。

6. 4. 1 SystemC の場合

SystemC で モジュールのクラス定義をする場合に、 そのクラスのメンバで、 他に公開していいもの は ポートとコンストラクタだけです。また逆の言い方をすると、 これら二つは必ず公開する必要があります。

それ以外のメンバーは protected、または private とします。

  6. 4 アクセス指示子 (Access Specifier)  
TOP > 6 SystemCを理解するためのC++入門 > 6. 4 アクセス指示子 (Access Specifier)