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


名称栏目:c++中如何使用static_cast转换-创新互联
文章链接:http://pwwzsj.com/article/dpjhdc.html