zoukankan      html  css  js  c++  java
  • 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小节。

  • 相关阅读:
    网络基础相关知识内容
    json模块的转义dump 和反转义 loap
    常用模块--time,sys,os,json
    正则表达式
    day_24 模块和包
    day23_内置函数(__del__ item系列 ,模块)
    LuoguP3806 【模板】点分治1 (点分治)
    BZOJ1305/Luogu3153 [CQOI2009]dance跳舞 (network flow)
    LuoguP2217 [HAOI2007]分割矩阵 (DP + memorized search)
    BZOJ3224/LuoguP3369 普通平衡树 (splay)
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2380913.html
Copyright © 2011-2022 走看看