C++中四种显示类型转换总结

简介:
#include <iostream>
using  namespace  std;
 
/*
  *四种显示类型转换
  **/
 
int  main(){
 
    /* static_case 类型转换*/
     double  a=1.1213;
     int  b= static_cast < int >(a);
     class  base{};
     class  father: public  base{};
     father f;
     base ba= static_cast <base>(f);
 
     /*reinterpret_cast类型转换*/
     //基本类型的指针类型转换
     double  c=12.123;
     double * pc=&c;
     int * pi= reinterpret_cast < int *>(pc);
     //不相关的类的指针的类型转换
     class  A{};
     class  B{};
     A* pa= new  A;
     B* pb= reinterpret_cast <B*>(pa);
     delete  pa;
     //指针转换为整数
     int  num= reinterpret_cast < int >(pc);
 
     //企图转换非指针类型的
     //b=reinterpret_cast<int>(a);  这条语句是错误的
     //企图将const指针转换为void指针
//  const int * pint=0;
//  void* pvoid=reinterpret_cast<void *>(pint);   错误
     /* const_cast 类型转换*/
     const  int * pint=0;
     int  * pint1= const_cast < int  *>(pint);
     //基于安全性的考虑,下面的转换是错误的
//  const int nInt=0;
//  int nInt2=const_cast<int>(nInt);
     int * pnum=0;
     const  int  * pnum2= const_cast < const  int *>(pnum);
     int  i=0;
     //const int i2=const_cast<const int>(i); //不能编译通过
     const  int  i2=( const  int )i; //隐式转换可以编译通过
     
 
     return  0;
}

  具体的总结请参考《C++ STL开发技术导引.pdf 》第1.6小节。

目录
相关文章
|
25天前
|
设计模式 安全 算法
【C/C++ 类型转换 】深入理解C++向上转型:从基础到应用
【C/C++ 类型转换 】深入理解C++向上转型:从基础到应用
41 0
|
26天前
|
安全 编译器 程序员
特殊类设计以及C++中的类型转换
特殊类设计以及C++中的类型转换
28 2
|
1月前
|
安全 编译器 C++
【C/C++ 类型转换规则】一文了解C/C++ 中的类型转换规则,帮助你更好的编程
【C/C++ 类型转换规则】一文了解C/C++ 中的类型转换规则,帮助你更好的编程
17 0
|
30天前
|
算法 Linux 编译器
【C++ 泛型编程 进阶篇】 C++ 模版元编程 类型转换 std::decay 全面教程
【C++ 泛型编程 进阶篇】 C++ 模版元编程 类型转换 std::decay 全面教程
42 0
|
1月前
|
安全 编译器 C语言
【C++ 类型转换关键字 *_cast 】理解const_cast、reinterpret_cast、dynamic_cast和static_cast的用法
【C++ 类型转换关键字 *_cast 】理解const_cast、reinterpret_cast、dynamic_cast和static_cast的用法
27 0
|
安全 编译器 程序员
【C++】—— C++的类型转换
【C++】—— C++的类型转换
|
1月前
|
安全 编译器 程序员
C++类型转换
C++类型转换
9 0
|
1月前
|
C++
c++类型转换
c++类型转换
50 1
|
2月前
|
存储 C++
C++ 操作重载与类型转换(二)
C++ 操作重载与类型转换(二)
41 2
|
2月前
|
自然语言处理 安全 C++
C++ 操作重载与类型转换(一)
C++ 操作重载与类型转换(一)
49 3