千家信息网

c++中如何使用static_cast转换

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章主要介绍c++中如何使用static_cast转换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!static_cast是一个强制类型转换操作符。强制类型转换,也称为显式
千家信息网最后更新 2024年11月11日c++中如何使用static_cast转换

这篇文章主要介绍c++中如何使用static_cast转换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

  static_cast是一个强制类型转换操作符。强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast、dynamic_cast、const_cast、reinterpert_cast四个。本节介绍static_cast操作符。

  static_cast的转换

  •编译器隐式执行的任何类型转换都可以由static_cast来完成,比如int与float、double与char、enum与int之间的转换等。

  doublea=1.999;

  intb=static_cast(a);//相当于a=b;

  当编译器隐式执行类型转换时,大多数的编译器都会给出一个警告:

  e:\vs2010projects\static_cast\static_cast\static_cast.cpp(11):warningC4244:"初始化":从"double"转换到"int",可能丢失数据

  使用static_cast可以明确告诉编译器,这种损失精度的转换是在知情的情况下进行的,也可以让阅读程序的其他程序员明确你转换的目的而不是由于疏忽。

  把精度大的类型转换为精度小的类型,static_cast使用位截断进行处理。

  •使用static_cast可以找回存放在void*指针中的值。

  doublea=1.999;

  void*vptr=&a;

  double*dptr=static_cast(vptr);

  cout<<*dptr<

  static_cast用来做什么

  static_cast也可以用在于基类与派生类指针或引用类型之间的转换。然而它不做运行时的检查,不如dynamic_cast安全。static_cast仅仅是依靠类型转换语句中提供的信息来进行转换,而dynamic_cast则会遍历整个类继承体系进行类型检查,因此dynamic_cast在执行效率上比static_cast要差一些。现在我们有父类与其派生类如下:

  classANIMAL

  {

  public:

  ANIMAL():_type("ANIMAL"){};

  virtualvoidOutPutname(){cout<<"ANIMAL";};

  private:

  string_type;

以上是"c++中如何使用static_cast转换"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0