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


==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/03/05/2380913.html,如需转载请自行联系原作者
相关文章
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
383 5
|
存储 编译器 数据安全/隐私保护
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解2
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
212 3
|
编译器 C++
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解1
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
356 3
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
190 2
|
C++
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
180 0
|
安全 程序员 C语言
从C语言到C++_37(特殊类设计和C++类型转换)单例模式(下)
从C语言到C++_37(特殊类设计和C++类型转换)单例模式
184 5
|
存储 安全 编译器
【C++11】类型转换
【C++11】类型转换
195 0
|
安全 程序员 编译器
C++一分钟之-C++中的类型转换
【7月更文挑战第8天】C++中的类型转换涉及隐式和显式操作,隐式转换如从`int`到`double`是自动的,但可能导致数据丢失。显式转换包括`static_cast`, `dynamic_cast`, `const_cast`, `reinterpret_cast`,以及转换构造函数。要避免数据丢失、类型不匹配和运行时错误,需谨慎使用显式转换并检查结果。过度使用`reinterpret_cast`应避免。理解这些转换有助于编写更安全的代码。
173 0
|
存储 编译器 C++
【C++】类和对象④(再谈构造函数:初始化列表,隐式类型转换,缺省值
C++中的隐式类型转换在变量赋值和函数调用中常见,如`double`转`int`。取引用时,须用`const`以防修改临时变量,如`const int& b = a;`。类可以有隐式单参构造,使`A aa2 = 1;`合法,但`explicit`关键字可阻止这种转换。C++11起,成员变量可设默认值,如`int _b1 = 1;`。博客探讨构造函数、初始化列表及编译器优化,关注更多C++特性。
|
安全 编译器 程序员
【C++航海王:追寻罗杰的编程之路】C++的类型转换
【C++航海王:追寻罗杰的编程之路】C++的类型转换
142 0