首页 > 编程语言 > 详细

C++转型操作符

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

虽然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++转型操作符

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!