クラス継承の基本的なこと
継承、単一継承
本記事の前提条件は以下の通りです。
- 初心者向け
- とは言っても、何らかのプログラムはそれなりに書けるけど、C とか C++ はちょっと、という人向け
- ざっくり概要しか説明しないので細かいことは気にしないでいただきたい
- Visual Studio 2013 くらい~
- Windowsプログラム (CUI, GUI)
- コードの検証
- 開発環境: Visual Studio 2022, x64, Release ビルド
- 実行環境: Windows 10
- 本記事は上から順番に読む前提となっている
- 「Visual Studio 2013 くらい~」と書いてあるが、本記事の内容だと現在過去未来のどのバージョンでもほぼ同じ
- 「Windowsプログラム (CUI, GUI)」と書いてあるが、本記事の内容だとどの OS でもほぼ同じ
前提知識として必要と思われる情報
単一継承のクラスを作成
基本料理クラス
class Cook
{
public:
void Wash(); // 洗う
void Cut(); // 切る
void Grill(); // 焼く
};
基本料理クラスを継承した拡張料理クラス
class CookEx : public Cook
{
public:
void Stew(); // 煮る
void Steam(); // 蒸す
void Mix(); // 混ぜる
};
拡張料理クラスを継承したお菓子作成クラス
class Baking : public CookEx
{
public:
void Sift(); // ふるいにかける
void Whisk(); // 泡立てる
};
拡張料理クラスを継承した魚料理クラス
class CookFish : public CookEx
{
public:
void Bleed(); // 血抜きをする
void RemoveScales(); // 鱗をとる
};
それぞれの関数名を標準出力するよう実装した。
使ってみる
Baking baking; // お菓子作成クラス
baking.Wash(); // 洗う
baking.Cut(); // 切る
baking.Sift(); // ふるいにかける
baking.Mix(); // 混ぜる
baking.Whisk(); // 泡立てる
baking.Grill(); // 焼く
// -> Wash, Cut, Sift, Mix, Whisk, Bake
CookFish cookFish; // 魚料理クラス
cookFish.Bleed(); // 血抜きをする
cookFish.RemoveScales();// 鱗をとる
cookFish.Wash(); // 洗う
cookFish.Cut(); // 切る
cookFish.Stew(); // 煮る
// -> Bleed, RemoveScales, Wash, Cut, Stew
基本機能 (Wash, Cut, Grill)、拡張機能 (Stew, Steam, Mix) が使えている。また、それぞれの派生クラスで独自実装した機能も使えていることがわかる。
以上。