id:syou6162とSkypeチャットしている時ににやにやしながら書いた.
#include <iostream> using namespace std; class Base { public: virtual void message() { cout << "Base" << endl; } }; class Inherit : public Base { public: void message() { cout << "Inherit" << endl; } }; int main() { Base b; Inherit i; b.message(); // これはBaseのものが呼ばれる i.message(); // これはInheritのものが呼ばれる cout << endl; // 派生クラスのオブジェクトをそのまま // 基底クラスのオブジェトに代入すると… b = i; b.message(); // これはBaseのものが呼ばれる(Inheritのものは呼ばれない) cout << endl; // ポインタを使うと… Base *bp1 = &b; Base *bp2 = &i; bp1->message(); // これはBaseのものが呼ばれる bp2->message(); // これはInheritのものが呼ばれる // ポインタを使わないとダメよ return 0; }
【実行結果】
Base Inherit Base Base Inherit
ちょっと適当すぎたけどまぁいいや.