注册 登录
编程论坛 C++教室

基类到子类的强制转换问题

fibers 发布于 2007-12-11 21:25, 1964 次点击
假如有如下关系:
class   a{};
class   b:public   a
{
private:   int   x;
public:   b();   int   method1()const{return   x;}
};
class   c:public   b
{
private:   char   ar[10];
public:c();     const   char   *   method2(){return   ar;}
};

b   obj1;
b   *   pb   =   &   obj1;
c   *   pc;
pc   =   dynamic_cast <c*> (pb);
pc-> method2();   //   pc可以调用method2方法么?????

这种基类到子类的向下转换是怎么执行的??比如说子类对象里有基类对象没有的char   型私有成员以及method2()方法。。在向下转换的时候。会自动生成这些成员?
还是说忽略这些成员?
3 回复
#2
lonmaor2007-12-11 21:36
向下转换是什么意思?
#3
liangchongch2007-12-12 09:16
不可以,因为C类的对象还未创建,而method2是C类的方法,所以不可以运行,pc只是一个C类的指针,指向了b类象
#4
中学者2007-12-13 08:47
dynamic_cast<>()要在多态下才能用~
1