标题:基类到子类的强制转换问题
只看楼主
fibers
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-22
 问题点数:0 回复次数:3 
基类到子类的强制转换问题
假如有如下关系:
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()方法。。在向下转换的时候。会自动生成这些成员?
还是说忽略这些成员?
搜索更多相关主题的帖子: 子类 基类 public char class 
2007-12-11 21:25
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
得分:0 
向下转换是什么意思?
2007-12-11 21:36
liangchongch
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-9-20
得分:0 
不可以,因为C类的对象还未创建,而method2是C类的方法,所以不可以运行,pc只是一个C类的指针,指向了b类象

NWE
2007-12-12 09:16
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
得分:0 
dynamic_cast<>()要在多态下才能用~

樱花大战,  有爱.
2007-12-13 08:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-191926-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025657 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved