1
问题是:
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++铸造操作员 – 2011-01-26 14:58:12
@baris:这不是*暗示*铸造! – 2011-01-26 14:59:24