モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

クラスの基本/動的なオブジェクトの生成と仮想デストラクタ (C++をもう一度)

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2014/12/09
最終更新最終更新
2018/09/07
記事区分記事区分
一般公開

目次

    Rubyを使った小技やスクリプトをシンプルに紹介

    サンプルコード

    #include <iostream>
    using namespace std;
    
    class MyClass {
    public:
        virtual ~MyClass(); // 仮想デストラクタ
    
    public:
        virtual void Say() = 0;
    };
    
    class MySubClass :
        public MyClass
    {
    public:
        virtual void Say();
    };
    
    MyClass::~MyClass() {
        // 派生クラスのデストラクタ → 基底クラスのデストラクタ
        // のため、抽象クラス (=0) であってもこれを省略できません。
    }
    
    void MySubClass::Say() {
        cout << "MySubClass::Say" << endl;
    }
    
    MySubClass CreateMySubClassCopied() {
        // コピーコンストラクタ
        // でもよいですが、返り値がMySubClassに限定されてしまいます。非推奨。
        MySubClass obj;
        return obj;
    }
    
    MyClass* CreateMySubClass() {
        // C++のFactoryMethodで利用します。
        return new MySubClass(); // アップキャストしてポインタで返すのが上等手段です。推奨。
    }
    
    int main() {
        MySubClass objCopied = CreateMySubClassCopied();
        objCopied.Say();
    
        MyClass* obj = CreateMySubClass();
        obj->Say();
        (*obj).Say(); // 不恰好ですがこうも書けますね (復習)
        delete obj; // 仮想デストラクタのおかげで、アップキャストしていても
                    // 派生クラスのデストラクタが実行されます。
                    // 継承関係が発生する場合、デストラクタは必ず仮想関数にしましょう。
                    // (いつでも仮想関数にしておいても実害はないためそうしましょう)
    
        // 配列形式で new することもできます。
        // ただし、コンストラクタの引数は指定できません。
        MyClass* objs = new MySubClass[2];
        objs[0].Say();
        delete[] objs;
    
        return 0;
    }
    
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    Rubyを使った小技やスクリプトをシンプルに紹介

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事