トップページ > プログラム > 2014年10月21日 > xnLzWUl1

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

6 位/194 ID中時間01234567891011121314151617181920212223Total
書き込み数0300000000000000000001105



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
383
C++相談室 part114

書き込みレス一覧

C++相談室 part114
378 :デフォルトの名無しさん[sage]:2014/10/21(火) 01:30:24.30 ID:xnLzWUl1
これを実行すると
class MyBase{
public:
  int method(){ return 10; }
};
class MyDerived :public MyBase{
public:
  int method(){ return 20; }
};

void main(){
  MyBase mb = MyDerived();
  int x = mb.method(); // = 10
}
x=10 になるんですが、C#で同じような処理をすると20が戻ります。
C++でもMyDerivedのmethodを実行して20が戻るようにすることは出来ますか?
C++相談室 part114
380 :デフォルトの名無しさん[sage]:2014/10/21(火) 01:45:12.43 ID:xnLzWUl1
>>379
レスありがとうございました。
早速やってみたのですが、10でした。
C++相談室 part114
383 :デフォルトの名無しさん[sage]:2014/10/21(火) 01:54:51.85 ID:xnLzWUl1
>>380,381
ありがとうございました。
無事にできました。virtual overrideとポインタが必要だったんですね。
勉強になりました。
C++相談室 part114
384 :383[sage]:2014/10/21(火) 21:35:24.11 ID:xnLzWUl1
---- header.hpp ---
using namespace std;
class MyBase{
public:
  MyBase *p;
  MyBase(){};
  MyBase(int n);
  virtual ~MyBase();
};
class MyDerived : public MyBase{
public:
  int N;
  MyDerived(){};
  MyDerived(int n){ N = n; };
};
---- main.cpp -----
MyBase::MyBase(int n){
  this->p = new MyDerived(n);
}
MyBase::~MyBase(){
  delete this->p;   // ここでエラーします。
}
void main() {
  MyBase *mb = new MyBase(2);
  delete mb;
}
デストラクタの書き方が良く分りません。最後にdeleteを実行すると
エラーするんですが、どうやれば良いのか3時間くらい考えても分りません。
だれか教えてください。
C++相談室 part114
390 :383[sage]:2014/10/21(火) 22:18:54.96 ID:xnLzWUl1
みなさん有難うございました。
無事解決しました。助かりました。
>>387
どのあたりが悪いかできればもう少し詳しく指摘お願いします。
>>388
お勧めの方法ありましたら、アドバイスお願いします。

ググりながら自己流で勉強しているので、分らないことだらけです。


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