2 weixin 28948863 weixin_28948863 于 2015.06.11 16:46 提问

c++中什么是对象类型转换
c++

c++中什么是对象类型转换?什么是向上转换和向下转换?具体应该要怎么做,可以举个与多态结合的例子吗?

8个回答

u013147600
u013147600   2015.06.11 17:03
已采纳
VisualEleven
VisualEleven   Ds   Rxr 2015.06.11 18:52
happyparrot
happyparrot   Ds   Rxr 2015.06.11 19:13

对象类型有很多种,比如整形,字符串,指针类型等
这些类型之间可以互相转换,比如字符串"123"可以转换为整形的123之类的处理。A类指针可以转换为B类指针等。
转换其实都是有规则的,不符合规则的转换一方面没有意义,另一方面容易出现问题,因此尽量避免。
向上转换应该是子类转换为基类指针的情况,这个一般是没问题的
向下转换应该是基类指针转换为子类指针,这需要强制转换,容易出问题,比如保证基类指针指向的空间实际是个子类的对象空间。

u013947616
u013947616   2015.06.11 22:05
u012377333
u012377333   Rxr 2015.06.12 08:54

有知道的就有static_cast、const_cast

yangbo50304
yangbo50304   2015.06.12 12:53

dynamic_cast
static_cast
设计到你说的向下转换和向上转换,
class A
{};
class B:public A
{};
A* pA = new B();
B* pB = dynamic_cast(pA);
这个就是向下转换。

B* pB = new B();
A* pA = static_cast(pB);
这个就是向上转换。

max_min_
max_min_   Rxr 2015.07.03 00:27

两个字:多态

找个基础点的c++的书籍看看。

oyljerry
oyljerry   Ds   Rxr 2015.06.11 19:37

主要就是基类,子类之间因为多态,而进行数据类型转换。

Csdn user default icon
上传中...
上传图片
插入图片