トップページ > プログラム > 2014年05月20日 > LPSd8BiO

書き込み順位&時間帯一覧

32 位/251 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000100000000000000023



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【初心者歓迎】C/C++室 Ver.90【環境依存OK】

書き込みレス一覧

【初心者歓迎】C/C++室 Ver.90【環境依存OK】
966 :デフォルトの名無しさん[sage]:2014/05/20(火) 07:57:00.60 ID:LPSd8BiO
>>961,962
テンプレート初心者なのですが、このクラスを使うときには
どんな風に記述するのでしょうか?
【初心者歓迎】C/C++室 Ver.90【環境依存OK】
980 :デフォルトの名無しさん[sage]:2014/05/20(火) 23:01:55.95 ID:LPSd8BiO
#include <iostream>
using namespace std;

class myBase{
public:
virtual void method(){
cout << "myBaseMethod" << endl;
};
};
class myClass:public myBase{
public:
virtual void method() override{
cout << "myClassMethod" << endl;
};
};

void main(){
myBase *pmb = new myClass();
pmb->method();

myBase mb = myClass();
mb.method();
}
これ実行すると
myClassMethod
myBaseMethod
と出るんですが、どうして二番目の方法ではoverrideできないのでしょうか?
数時間悩んだのですが分りません。ポインタを使わないとoverrideできない
のでしょうか?
【初心者歓迎】C/C++室 Ver.90【環境依存OK】
989 :デフォルトの名無しさん[sage]:2014/05/20(火) 23:50:20.20 ID:LPSd8BiO
みなさんありがとうございます。
myBase &mbr = myClass();
mbr.method();
と書き換えたらoverrideできました。
でもまだよく分らないのですが、
> myBase mb;
> これだけでmyBaseの実体ができる
> これに何を代入してもmbはmyBaseのまま
> 構造体としてのデータのコピーが起こるだけ
データのコピーが起こったらmbの実体がmyClassに変わるのではないですか?
その結果、myClassのMethod()が呼び出されると思ったのですが。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。