温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

c++中如何使用static_cast转换

发布时间:2021-09-23 09:22:14 来源:亿速云 阅读:166 作者:小新 栏目:开发技术

这篇文章主要介绍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<double>(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<double*>(vptr);

  cout<<*dptr<<endl;//输出1.999

  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转换”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI