ポリモーフィズムの実装で、原型クラスのポインタを使って、なぜ派生クラスを指し示すようになったのでしょうか?
class Girl;public Humanというのは物理的にどのように設定されているのでしょうか?
humanクラスから派生されたから、human classのポインターで派生クラスを示せるというのは概念的、機能的には理解できますが、それがどのようにプログラムされたのか気になりました。
派生というものが、どのように実装されたのかに触れて説明していただけると嬉しいです。
皆さま、よろしくお願いします。
お二方、仮想関数についてはよく理解できました、ありがとうございました!
しかしptr=&aliceについて疑問があります。
ptrはhumanクラスのポインターであって、ガールやボーイクラスのポインタではないですよね、ポインタはどのように、指すクラスが適切なのかを判断しているのでしょうか?
全く関係ない魚クラスを作って、humanクラスのポインタでは指すことはできませんよね。
度々申し訳ありません、よろしくお願いします。
コード class Human{ // 基底クラス public: virtual void speak(){ printf("I am human.\n"); } // 仮想関数 }; class Girl : public Human{ public: void speak(){ printf("I am girl.\n"); } }; class Boy : public Human{ public: void speak(){ printf("I am boy.\n"); } }; int main(void) { Human *ptr; Girl alice; Boy bob; ptr=&alice; ptr->speak(); ptr=&bob; ptr->speak(); return(0); }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/24 01:29