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

目录
相关文章
|
7月前
|
安全 编译器 程序员
【C++】C++的类型转换
【C++】C++的类型转换
|
7月前
|
设计模式 安全 算法
【C/C++ 类型转换 】深入理解C++向上转型:从基础到应用
【C/C++ 类型转换 】深入理解C++向上转型:从基础到应用
221 0
|
11天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
37 5
|
2月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
20 1
|
2月前
|
存储 编译器 数据安全/隐私保护
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解2
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
31 3
|
2月前
|
编译器 C++
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解1
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
47 3
|
7月前
|
存储 安全 编译器
C++:现代类型转换
C++:现代类型转换
51 5
|
2月前
|
C++
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
21 0
|
5月前
|
存储 安全 编译器
【C++11】类型转换
【C++11】类型转换
30 0
|
5月前
|
安全 程序员 编译器
C++一分钟之-C++中的类型转换
【7月更文挑战第8天】C++中的类型转换涉及隐式和显式操作,隐式转换如从`int`到`double`是自动的,但可能导致数据丢失。显式转换包括`static_cast`, `dynamic_cast`, `const_cast`, `reinterpret_cast`,以及转换构造函数。要避免数据丢失、类型不匹配和运行时错误,需谨慎使用显式转换并检查结果。过度使用`reinterpret_cast`应避免。理解这些转换有助于编写更安全的代码。
45 0