【初心者歓迎】C/C++室 Ver.56【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0175デフォルトの名無しさん
2008/07/09(水) 02:41:48俺はPHPのOOPしかまともにやった事がないと事前に言い訳させといてね
C++ってvirtual付けてないと親クラスのメソッドとして実行されちゃうと思うんだけど、
それだと、継承先の子クラスの方で「あれ?オーバライドしたのに親クラスの動作に
なるぞ?」ってなるんじゃない?
たとえば、親クラスで以下のメソッドがあるとする
・Hoge::testMethod() { cout << "親クラスですよ"; }
で、これを子クラスのほうでオーバライドする
・Foo::testMethod() { cout << "子クラスですよ"; }
これで、子クラスのインスタンス作ってtestMethodを実行したら実行結果が、親クラスですよ
っていう結果になってしまうのだよ!
※ Foo* fooInstance = new Foo();でインスタンスを作った場合
ただし、Fooインスタンスを作る場合に、上の例みたいに参照先を設定するんじゃなくて、
Foo fooInstane
見たいな作り方すれば意図した動作をするみたい(子クラスですよが表示される)
ただ、インスタンスの作り方なんて人が変われば異なってくる可能性があるから、オーバライドするなら
virtual付けといた方がいいと思う。
多分間違ってないと思うけど参考程度に・・・
■ このスレッドは過去ログ倉庫に格納されています