`

C++提供了四种新的类型强制

    博客分类:
  • c++
阅读更多
static_cast
const_cast
reinterpret_cast
dynamic_cast

1)staic_cast静态强制;


不能在无关的指针之间进行static类型强制
class   CAnimal 
{ 
  //... 
  public: 
  CAnimal(){} 
}; 

class   CGiraffe:public   CAnimal 
{ 
  //... 
  public: 
  CGiraffe(){} 
}; 

int   main(void) 
{ 
  CAnimal   an; 
  CGiraffe   jean; 

  an   =   static_cast <CAnimal> (jean);//将对象jean强制成CAnimal类型 
  return   0; 
} 


2、const_cast类型强制

const_cast类型强制将一个const变量变成一个非const的等价形式


int   main() 
{ 
  const   int   j   =   99; 
  int   *   k; 

  k   =   const_cast <int   *> (&j);//解除const 
  return   0; 
} 


3、reinterpret_cast运算符

reinterpret_cast运算符用来将一个类型指针转变为另一种类型的指针,也用在将整开型量转为指针,或将指针转为整型量上;

int   main() 
{ 
   int   j   =   10; 
   int   *   ptr   =   &j; 
   char   *   cptr; 

   cptr   =   reinterpret_cast <char   *> (ptr);
     //将int指针类型转变为   char的指针类型 
    return   0; 
} 


4、dynamic_cast运算符

dynamic_cast的主要目的是:

1)它返回派生类对象的地址;
2)它测试基类指针是否指向下一尖括号 <> 中所指定类型的对象

dynamic_cast是一个运行时类型信息,dynamic_cast运算符将指向派生对象的基类部分的基类指针转变为指向派生对象的派生类指针,dynamic_cast必须严格地指定与派生对象相同的类,或者它返回NULL指针;
class   CAnimal 
{ 
  //... 
}; 
class   CGiraffe:public   CAnimal 
{ 
  //... 
}; 
class   CGoat:public   CAnimal 
{ 
  //... 
}; 

int   main() 
{ 
   CGiraffe   gene; 
   CAnimal   *   aptr   =   &gene; 
   CGiraffe   *   ptr1,*   ptr2; 

   ptr1   =   dynamic_cast <CGiraffe   *> (aptr); 
   ptr2   =   dynamic_cast <CGoat   *> (aptr); //return   NULL 

   return   0; 
} 
 
 


  


  
分享到:
评论

相关推荐

    C++ 四种强制类型转换的总结

    C++ 四种强制类型转换的总结

    c++四种强制类型转换

    c++四种强制类型转换 学习C++的可以好好的看看

    c++四种强制类型装换

    详解c++四种强制类型转换的用法和区别,你一定会用到

    C++4种强制类型转换

    C++4种强制类型转换 C++4种强制类型转换 C++4种强制类型转换 C++4种强制类型转换

    浅谈C++中强制类型转换函数

    C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。

    解析C++中四种强制类型转换的区别详解

    那为什么还需要一个新的C++类型的强制转换呢?新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。C++中风格是static_cast(content)。C++风格的强制转换其他的好处是,它们能更清晰...

    C++强制类型转换

    C++强制类型转换的资料,详细介绍了C++特有的四种类型转换机制,供有需要的人下载!

    C++的cast强制类型转换

    C++的cast强制类型转换,C++的类型转换方式使用教程

    深入C++四种强制类型转换的总结

    c++中提供了四种新的强制转换分别是:const_cast、dynamic_cast、reinterpret_cast、static_cast.这四种转换类型,每一种都适用于特定的目的:const_cast 一般用于强制取消对象的常量性。它是唯一能够做到这一点的...

    C++中四种强制类型转换的区别

    使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast。  1、static_cast  用法:static_cast (expression)  该运算符把expression转换为type-id类型,但没有运行时类型检查来...

    C++ 中的强制类型转换

    C++ 中的强制类型转换,显示转换也成为强制类型转换(cast),包括以下列名字命名的强制类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。

    C++四种强制类型转换

    四种强制类型转换:static_cast const_cast dynamic_cast reinterpret_cast  1、static_cast  编译器隐式执行的任何类型转换都可以由static_cast显示完成。  ①用于类层次结构中基类和子类之间指针或引用的...

    C++中4种强制类型转换的区别总结

    使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,...

    C++中用于强制类型转换的四个运算符

    本文详细介绍了C++中的四个用与强制类型转换的运算符:用来修改类型的const 或volatile 属性的const_cast,用来修改操作数类型的reinterpret_cast,static_cast,dynamic_cast

    C++ 四中常用强制类型转化

    C++四中常用强制类型转化, :static_cast、dynamic_cast、reinterpret_cast、和const_cast

    关于C++的强制类型转换浅析

    C++其实也具有自己的一套强制类型转换它们分明是:static_cast reinterpret_cast const_cast dynamic_cast四种类型. 那么肯定会有人好奇C++是不是闲,C语言的强制类型用的舒舒服服的,为什么要新推出来这几个? 新...

    C++中强制类型转换的应用

    1.1 强制类型转换  大家都知道在C语言里强制类型转换的方法非常简单,只要在要转换的变量...  在C++语言里为了让强制类型转换更明显,更安全,所以把不同情况下的强制类型转换分为四种,分别为:  static_cast 

    深入理解C++11:C++11新特性解析与应用

    《深入理解C++11:C++11新特性解析与应用》主要内容:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11...

Global site tag (gtag.js) - Google Analytics