您的位置:首页 > 编程语言 > C语言/C++

c++标准程序库 第二章之型别转换

2019-07-05 17:38 1961 查看

型别转换操作符(Type Conversion Operators)
1、static_cast
将一个值以符合逻辑的方式转型
如:

float x;
cout<<static_cast<int>(x);//float转换为int

2、dynamic_cast
多态型别向下转型为实际静态型别。。。基类–>派生类。这是唯一在执行期进行校验的转型动作。如:

class Car;
class Cabriolet:public Car{
...};
class Limousine:public Car{
...
};
void f(Car *cp)
{
Carbriolet* p=dynamic_cast<Cabriolet*>cp;
if(p==NULL)
{
//did not refer to an object of type Cabriolet
}
}

当参数是个reference,而且型别转换失败时,dynamic_cast会丢出一个bad_cast异常。应避免这种“程序行为取决于具体型别”的写法
3、const_cat
设定或去除型别的常数性(constness),亦可去除volatile饰词,除此之外,不允许任何转换
4、reinterpret_cast
此操作符的行为由实际编译器定义

这些操作符都只接收一个参数

static_cast<Fraction>(15,100);//错误

将15和100转换为分数的正确做法是:

Fraction(15,100);//
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐