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

C++类型转换

2013-11-19 08:20 169 查看
C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。

const_cast,字面上理解就是去const属性。

static_cast,命名上理解是静态类型转换。如int转换成char。

dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。

reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。

static_cast数值类型之间,有一方是void*的指针类型之间

const_cast用于临时去掉const、volatile限制

reinterpret_cast任意两种指针类型之间,指针于数值类型之间

reinterpret_cast:仅仅重新解释类型,但没有进行二进制的转换:

#include <iostream>

using namespace std;

#include <cstdlib>

int main()

{

int n = static_cast<int>(45.67);

int* p = static_cast<int*>(calloc(sizeof(int),10));

free(p);

const int k = n;

cout << "k=" << k << endl;

const_cast<int&>(k) = 789;

cout << "k=" << k << endl;

float f=123.45;

p = reinterpret_cast<int*>(&f);

cout << *p << endl;

n = int(12.34);

cout << "n=" << n << endl;

n = int();

cout << "n=" << n << endl;

int m(100);

cout << "m=" << m << endl;

int x();//函数声明

int(y)=200;//尽量不用,容易跟强制类型转换混淆

cout << "y=" << y << endl;

}

去const属性用const_cast。

基本类型转换用static_cast。

多态类之间的类型转换用daynamic_cast。

不同类型的指针类型转换用reinterpret_cast。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: