问题有类A和B,B是A的子类,
在C++(VC6.0),A* a = new A();B* b = (B*)a;ok
在JAVA,A a = new A();B b = (B)a;运行出现ClassCastException;
本来我想当然认为应该是java这种思路的,可是C++中这样把我弄糊涂了
在C++(VC6.0),A* a = new A();B* b = (B*)a;ok
在JAVA,A a = new A();B b = (B)a;运行出现ClassCastException;
本来我想当然认为应该是java这种思路的,可是C++中这样把我弄糊涂了
#include <iostream>
using namespace std;
class A
{
public:
int i;
A(int a):i(a){}
};class B:public A
{
public:
int j;
B(int a,int b):A(a),j(b){}
};int main()
{
for(int i=0; i<100; ++i){
A* a = new A(1);
B* b = (B*)a;
cout<<b->j<<endl;}//a、b指向同一块区域,可以打印&(*a),但是sizeof(*a)=4,sizeof(*b)=8,内存要靠自己去维护
system("pause");
return 0;
}
java里面从来都不能从上往下转型的。