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

広告

posted by fanblog

2017年12月08日

《その168》 クラスの継承(1)


 クラスの継承

 クラス A を元にして、派生クラス B を作ることが可能です。クラス A が持っている機能をそのまま継承して、さらにそれに新しい機能を付加することができます。
 次のプログラムは、自分用のレベルなので初歩の初歩レベルなのですが、派生クラスの作り方や基本事項のいくつかが含まれています。

// ------------------------------------
#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 : public Base {
// Baseクラスを親クラスとして、子クラス Derived を作成。
// public派生なので、基底クラス Base のpublicメンバは、
// 派生クラス Derived においても publicメンバです。

public:
int y;

// 派生クラス Derived 独自のデータメンバです。
};


int main()
{
Derived d;

cout << d.get_x() << '\n'; // 99
// Baseクラスの公開メンバ関数 get_x は、
// 派生クラス Derived の公開メンバ関数です。


d.set_x(10);
// データメンバ x に値をセット。
// Baseクラスの公開メンバ関数 set_x は、
// 派生クラス Derived の公開メンバ関数です。


cout << d.get_x() << '\n'; // 10
// 値が変更されています。

int Derived::*ptr = &Derived::y;
d.*ptr = 20;
// Derivedクラスには、データメンバ y 用のセッタが
// ないので、Derived::y へのポインタ ptr を利用
// して、y に値をセット。
// y は publicメンバなので、単に
// d.y = 20;
// とするだけでいいのに、ちょっと前回《167》の復習
// をしてみたかったので・・・ (*^^*)ゞ


cout << d.y << '\n'; // 20
// 値が変更されています。

cout << d.get_x() << " " << d.y << '\n'; // 10 20
// 現時点での x, y の値です。

Base b;
// Base型のクラス b を作りました。

cout << b.get_x() << '\n'; // 99
// Base のコンストラクタの設定通りの値です。

b = d;
// 基底クラス(親クラス) Base のオブジェクト b に、
// 派生クラス(子クラス) Derived のオブジェクト
// d を代入します。
// b と d は型が違うのですが、大丈夫です。


cout << b.get_x() << '\n'; // 10
// Base のコンストラクタの設定通りの値だったのが、
// オブジェクト d のデータメンバ x の値に変更
// されています。
// b = d; は可能ですが、
// d = b; はできません。 d.y に何を代入したらいい
// のかが分からないからです。

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



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

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

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

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





この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7067449
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック

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

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

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

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

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


検索
<< 2018年08月 >>
      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日以上新しい記事の更新がないブログに表示されております。