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小节。

目录
相关文章
|
安全 编译器 程序员
【C++】C++的类型转换
【C++】C++的类型转换
|
设计模式 安全 算法
【C/C++ 类型转换 】深入理解C++向上转型:从基础到应用
【C/C++ 类型转换 】深入理解C++向上转型:从基础到应用
358 0
|
存储 安全 编译器
C++:现代类型转换
C++:现代类型转换
105 5
|
10月前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
265 5
|
11月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
102 2
|
11月前
|
存储 编译器 数据安全/隐私保护
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解2
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
143 3
|
11月前
|
编译器 C++
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解1
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
233 3
|
11月前
|
C++
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
112 0
|
安全 程序员 C语言
从C语言到C++_37(特殊类设计和C++类型转换)单例模式(下)
从C语言到C++_37(特殊类设计和C++类型转换)单例模式
104 5
|
存储 安全 程序员
C++中的四种类型转换运算符
reinterpret_cast` 则是非常危险的类型转换,仅用于二进制级别的解释,不检查安全性。`dynamic_cast` 用于类的继承层次间转换,向上转型总是安全的,向下转型时会借助 RTTI 进行安全性检查。只有当转换路径在继承链内时,转换才会成功。