猿问

为什么使用静态_CAST<int>(X)而不是(Int)x?

为什么使用静态_CAST<int>(X)而不是(Int)x?

我听说static_cast功能应优先于C型或简单功能型铸造.这是真的吗?为什么?



开满天机
浏览 1456回答 3
3回答

噜噜哒

一个实用的提示:如果您计划整理项目,可以轻松地搜索源代码中的StaticCAST关键字。

交互式爱情

总之:static_cast<>()给你一个编译时间检查能力,C风格的转换没有.static_cast<>()在C+源代码中的任何地方都可以很容易地发现;相反,C_样式的强制转换更难识别。使用C+强制转换可以更好地表达意图。更多解释:静态强制转换在兼容类型..它类似于C型演员,但限制性更强。例如,C样式的强制转换将允许一个整数指针指向一个字符.char&nbsp;c&nbsp;=&nbsp;10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;byteint&nbsp;*p&nbsp;=&nbsp;(int*)&c;&nbsp;//&nbsp;4&nbsp;bytes由于这将导致一个指向1字节分配内存的4字节指针,因此向该指针写入将导致运行时错误或覆盖一些相邻内存。*p&nbsp;=&nbsp;5;&nbsp;//&nbsp;run-time&nbsp;error:&nbsp;stack&nbsp;corruption与C样式的强制转换不同,静态强制转换将允许编译器检查指针和切入点数据类型是否兼容,这允许程序员在编译期间捕获这个不正确的指针分配。int&nbsp;*q&nbsp;=&nbsp;static_cast<int*>(&c);&nbsp;//&nbsp;compile-time&nbsp;error阅读更多内容:静态铸造<>与C型铸造有什么区别?和规则型与静态型与动态型
随时随地看视频慕课网APP
我要回答