C++学习笔记:static_cast和reinterpret_cast

来源:互联网 发布:天谕玉虚男捏脸数据 编辑:程序博客网 时间:2024/06/11 00:31

C++的类型转换

1.类型转换名称和语法

C风格的强制类型转换(TYPE Cast)很简单,不管什么类型的转换统统是:

TYPE b=(TYPE)a

C++风格的类型转化提供了4种类型转换操作符来应对不同场合的应用。

static_cast                静态类型转换,如Int转换成char

reinterpreter_cast   重新解释类型

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

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

4种类型转换的格式

TYPE B=static_cast<TYPE>(a)


2.类型转换一般性介绍

1)static_cast<>() 静态类型转换,编译的C++编译器会做类型检查:

基本类型能转换,但是不能转换指针类型

2)若不同类型之间,进行强制类型转换,用reinrepret_cast<>()进行重新解释

3)一般性解释:

C语言 能隐式类型转换的,在C++中可用static_cast<>()进行类型转换,因C++编译器在编译检查一般多能通过。

C语言中不能隐式转换的,在C++中可以用reintepret_cast<>进行强制类型解释。总结:static_cast<>()和reintepret_cast<>()基本上把C语言

强制类型转换给覆盖了。   reinterpret_cast<>()很难保证移植性。

// ConsoleApplication18.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){double pi = 3.1415926;int p2 = static_cast<int>(pi);char *p3 = "hello";int *t = reinterpret_cast<int *>(p3);return 0;}


4)dynamic_cast<>(),动态类型转换,安全的基类和子类之间转换;运行时类型检查

5)const_cast<>(),去除变量的只读属性

0 0
原创粉丝点击