类的转换
在C++中把一个基指针强制为派生指针并存取整个派生类是可以的,但相反呢?
派生类指针可以转换为基类指针吗?没有关联的类可以互相转换吗?
为此作了一个例程:
class ca
{
public:
void testa(){printf("test ca");}
}
class cb
{
public:
void runother(){};
void test(){printf("test cb");}
}
class cc:public ca,cb
{
public:
void test(){printf("test cc");}
}
main()
{
ca *a;
cb *b;
cc *c;
c=new cc;
c->test();
a=(ca*)c;
a->testa();
b=(cb*)a; //俩个没有关系的类指针的互换
b->test();
}
在VC6下调试通过,但理论依据是什么呢?随便哪两种类都可以互相强制转换吗?
我没想清楚,还请各位帮我理解一下,谢谢。