C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

C++ class とそれに関係してくるものを書いて覚えるための初心者自己中記事③

 

nenechi.hatenablog.com

 続きです。

 

次はclass の継承について勉強。

共通部分がある class はその共通部分だけの class を作りそれを親として

子の class に継承できる。

 

親クラスの事を基底クラス

子クラスのことを派生クラスと呼ぶ。

 

これが

 

---------------------------------------------

class InputCin{

public:

    bool Set();

    double Get(); //共通点

private:

    double inputNum; //共通点

};

 

 

class InputArray{ // class InputArrayは配列の管理

public:

    InputArray(const double* array); //配列を受け取る引数付きコンストラクタ

    bool Set(); //Set関数が呼び出されるたびにinputIndexinputNumに次のインデックス番号と数値が記憶される

    double Get(); //Set関数でセットされたインデックスの数値を返す

    

private:

    const double* inputArray; //配列のアドレスポインタ

    int inputIndex; //Set関数で現在のインデックスを記憶

    double inputNum; //Set関数で現在のインデックスの数値を記憶

    

};

---------------------------------------------

 

こうなる

---------------------------------------------

class Input{

public:

    double Get(); //共通点

//privateだとエラーになったからとりあえずpublic

    double inputNum; //共通点

};

 

 

class InputCin : public Input{

public:

    bool Set();

private:

};

 

 

class InputArray : public Input{ // class InputArrayは配列の管理

public:

    InputArray(const double* array); //配列を受け取る引数付きコンストラクタ

    bool Set(); //Set関数が呼び出されるたびにinputIndexinputNumに次のインデックス番号と数値が記憶される

    

private:

    const double* inputArray; //配列のアドレスポインタ

    int inputIndex; //Set関数で現在のインデックスを記憶

    

};

---------------------------------------------

通常のクラス作成と同じようにして基底クラスを作成したら、

派生クラスになるクラスのクラス名の後に : public 基底クラス名を追加する。

もちろん共通部分で基底クラスに移動したメンバは派生クラスからは削除する。

 

実装部分も普通にやればできました。

 

そして、基底クラスを設ける前は double inputNumprivate でOKだったんだけど

エラーになったのでとりあえず public にしてあるがこれは別のものに出来る

 

アクセス指定子

public

private

protected  <-NEW!!

 

protected外部からのアクセスは禁止される。ただし派生クラスからのアクセスなら許可されるのだ。

 

つまり、これは前述の double inputNum の為にあるようなものだ。

 

今日はここまで

明日はアップキャストとやらの勉強