强制转换的问题!

jemmy 2005-03-21 01:37:58
class A
{

}

class B:public A
{

}

为什么

我定义A的对象
A a;
强制转换
B b=(B)a;
出错呢?
...全文
186 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BillSmith 2005-03-22
  • 打赏
  • 举报
回复
搞反了啦!基类对象不能转成派生类的。
csumallsme 2005-03-21
  • 打赏
  • 举报
回复
使用RTTI
defyer007 2005-03-21
  • 打赏
  • 举报
回复
楼上的楼上:汽车可以是轿车,轿车是汽车的一种

如果在派生类中定义了复制构造函数,且将其参数设置成基类的引用参数
或者用引用类型的转换应该可以的吧,比如 B &b=(B &)a;
private reference,advice only
OYXC 2005-03-21
  • 打赏
  • 举报
回复
为什么我操作就能顺利进行呢?我的是VC 6.0
xjp6688 2005-03-21
  • 打赏
  • 举报
回复
汽车就非的是轿车吗?
goodluckyxl 2005-03-21
  • 打赏
  • 举报
回复
可以用 dynamic_cast<>
happylove311 2005-03-21
  • 打赏
  • 举报
回复
父类不可以强转为子类;通俗一点儿讲:(老子不可以转为做儿子)。
allen_zhaozhencn 2005-03-21
  • 打赏
  • 举报
回复
public 继承就是is-a, 派生类对象赋值给基类对象会产生“切割”现象。基类对象转为派生类对象则不可以。


yuchengliu 2005-03-21
  • 打赏
  • 举报
回复
不可以把基类转换为子类!
使用 static_cast
不过最好不要用!
oyljerry 2005-03-21
  • 打赏
  • 举报
回复
派生类给基类,会损失一些参数,但可以
基类转派生类,则不安全
Salam2001 2005-03-21
  • 打赏
  • 举报
回复
这种类型转换是不对的。不能将基类对象赋给派生类对象,而只能将派生类对象赋给基类对西哪个。
因为,派生类对象是一种基类对象,所以 a = b 合法。
而,基类对象不是一种派生类对象,所以 b = a 非法,强制转换也不行,因为这种操作的后果将是不安全的。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧