0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[初級] C++: 継承

Last updated at Posted at 2024-06-01

クラス継承の基本的なこと
継承、単一継承

本記事の前提条件は以下の通りです。

  • 初心者向け
  • とは言っても、何らかのプログラムはそれなりに書けるけど、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) が使えている。また、それぞれの派生クラスで独自実装した機能も使えていることがわかる。

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?