这篇文章主要介绍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转换”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
文章标题:c++中如何使用static_cast转换-创新互联
分享URL:https://www.cdcxhl.com/article12/dpjhdc.html
成都网站建设公司_创新互联,为您提供手机网站建设、品牌网站制作、移动网站建设、电子商务、响应式网站、标签优化
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联