質問は次のとおりです。
a)以下のコードは合法であるかどうか? (実行時にクラッシュすることを考慮)
b)コンパイル時にgccまたはMVCのコンパイラフラグが表示される場合は、次のコードの潜在的な問題がありますか?C++動的バインディングの問題
#include <iostream>
using namespace std;
class A
{
public:
void write(){ cout<<"A"; }
};
class B
{
public:
virtual void write(){ cout<<"B"; }
};
int main()
{
A *pa=(A*) new B();
pa->write();
B *pb=(B*) new A() ;
pb->write();
delete pa;
delete pb;
return 0;
}
ありがとうございます!
また、Cスタイルのキャスト、試してくださいC + +のキャスト演算子 –
@バリス:それは* implict *キャスティングではない! –
'新しいB()'を 'A *'にキャストする特別な理由はありますか?それらはすべて互いに関連しているわけではありません。 – Naveen