アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2017年12月09日

《その169》 クラスの継承(2)


 クラスの継承

 前回《168》、クラス Base を元にして、public派生の形態で派生クラス Derived を作りました。
 今回は、private派生の形態で派生クラスを作り、その違いを見てみます。前回同様、基底クラスの名前を Base、派生クラスの名前を Derived とすることにします。

 public派生とprivate派生の差異の詳細は、ここでは扱いませんが、いちばん目立つ違いは、次の点だろうと思います。

public派生
  基底クラスの publicメンバは、派生クラスにおいても publicメンバである。

private派生
  基底クラスの publicメンバは、派生クラスにおいては privateメンバである。


// ------------------------------------
#include <iostream>
using namespace std;

// 基底クラス Base
class Base {
int x;
public:
Base() : x(99) { }
int get_x() const { return x; }
void set_x(int n) { x = n; }
};

// 派生クラス Derived
class Derived : private Base { // private派生
// private派生の場合、基底クラス Base の publicメンバ
// は、派生クラス内では、privateメンバになります。

public:
int y;
int get_x_() const { return get_x(); }
// 基底クラス Base の publicメンバ関数は、派生クラ
// ス内では private になってしまいますから、
// 利用者は get_x関数 や set_x関数を使うこ
// とができません。
// 利用者が、データメンバ x の値を知る必要があるな
// ら、そのためのゲッタが必要です。


void set_x_(int n) { set_x(n); }
// 利用者が、データメンバ x に値をセットするための
// セッタです。

};

int main()
{
Derived d;

cout << d.get_x_() << '\n'; // 99
d.set_x_(10);
cout << d.get_x_() << '\n'; // 10
d.y = 20;
cout << d.y << '\n'; // 20
cout << d.get_x_() << " " << d.y << '\n'; // 10 20

Base b;

cout << b.get_x() << '\n'; // 99

// b = d; // 不可
// アクセスできない基底クラス Base への変換は許可され
// ていません。

}
// ------------------------------------
f04_0001.png



新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/11/10 13:13時点)

新版 明解C 中級編 (明解シリーズ)

新品価格
¥2,916から
(2017/11/10 13:14時点)






 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2017年12月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。