c++将指向子类对象的父类对象转成子类对象

发布网友

我来回答

2个回答

热心网友

使用dynamic_cast,它主要用于有继承关系或多态类的变量或对象之间的转换
C++还有几种转换:

const_cast 去const属性,将const变量转换为可修改的或相反。

static_cast 强制类型转换,可施加于任何类型的转换运用比较广泛,但不能保证类型的安全性,对基本类型的转换不会有问题,但对于继承或多态转换可能会有一些难以调试的错误所以汗继承和多态关系的dynamic_cast。

reinterpret_cast 可改变指针类型,或价格一个指针类型转为整形及整形转换为指针类型,转换效果与具体代码相关,需谨慎使用。

具体可以看面相对象程序设计C++语言描述追问大神呀,这些类型转换在谭浩强那本书上找不到啊?是标准库里面的吗?能不能推荐一本介绍那些转换的C++语言学习的书啊!谢谢!

追答推荐:相对象程序设计C++语言描述 Richard JohnsonBaugh Martin Kalin 著 蔡宇辉 李军义 译
一般的好一点的C++教程里也都有

热心网友

他们是没有必然关系的。就跟你随便生成另外两个其他类型的变量一样。当然,你实例化的对象b跟a有关系。b对象开头的部分4个字节是虚函数表,接着就是基类的数据成员,然后是子类的数据成员。这个很简单,所以不用画图了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com