码迷,mamicode.com
首页 > 编程语言 > 详细

C++转型操作符

时间:2019-04-07 13:14:20      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:...   null   oid   形式   移植   常量   操作符   some   exp   

虽然C++兼容旧式C语言转型的方式,但推荐统一使用C++新型的4个转型操作符:static_cast, const_cast, dynamic_cast, reinterpret_cast.

1. static_cast

c旧时转型形式应采用static_cast来转换,其基本上具有与c旧式转型的功能:

(type) expression     →→     static_cast<type> (expression)

 

2. const_cast

改变表达式中的常量性或变易性,常见用途是将某个对象的常量性去除。

class Circle {...};
void resize(Circle* p);
Circle a;
const Circle& b = a;
resize(&b);  //执行出错
resize(const_cast<Circle*>(&b)); //执行成功

 

3. dynamic_cast

用来安全的执行继承体系中的向下转型。将指向基类对象的指针或引用转化为子类对象的指针或引用,若转换失败,则会返回null指针(转换对象是指针)或一个exception异常(转换对象是引用)。

 

4. reinterpret_cast

常用于转换函数指针类型。此操作符与编译平台相关,不具备移植性,因而不推荐使用。

typede int (*Func) ();
Func funcPtr;
void doSomething();
funcPtr = &doSomething; //错误,返回类型不符合
funcPtr = reinterpret_cast<Func>(&doSomething) // 编译正常

 

C++转型操作符

标签:...   null   oid   形式   移植   常量   操作符   some   exp   

原文地址:https://www.cnblogs.com/share-ideas/p/10664923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!