| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 511 人关注过本帖
标题:基类到子类的强制转换问题
收藏  订阅  推荐  打印 
fibers
Rank: 1
等级:新手上路
帖子:6
积分:162
注册:2007-9-22
基类到子类的强制转换问题

假如有如下关系:
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: 12Rank: 12Rank: 12
来自:郑州
等级:版主
威望:15
帖子:701
积分:6310
注册:2007-11-27

向下转换是什么意思?
2007-12-11 21:36
liangchongch
Rank: 1
等级:新手上路
帖子:24
积分:344
注册:2007-9-20

不可以,因为C类的对象还未创建,而method2是C类的方法,所以不可以运行,pc只是一个C类的指针,指向了b类象

NWE
2007-12-12 09:16
中学者
Rank: 12Rank: 12Rank: 12
等级:版主
威望:14
帖子:3389
积分:34733
注册:2007-9-14

dynamic_cast<>()要在多态下才能用~

汇编.....
2007-12-13 08:47
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.065387 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved