猿问
为什么使用静态_CAST<int>(X)而不是(Int)x?
为什么使用静态_CAST<int>(X)而不是(Int)x?
我听说
static_cast
功能应优先于C型或简单功能型铸造.这是真的吗?为什么?
开满天机
浏览 1456
回答 3
3回答
噜噜哒
一个实用的提示:如果您计划整理项目,可以轻松地搜索源代码中的StaticCAST关键字。
0
0
0
交互式爱情
总之:static_cast<>()给你一个编译时间检查能力,C风格的转换没有.static_cast<>()在C+源代码中的任何地方都可以很容易地发现;相反,C_样式的强制转换更难识别。使用C+强制转换可以更好地表达意图。更多解释:静态强制转换在兼容类型..它类似于C型演员,但限制性更强。例如,C样式的强制转换将允许一个整数指针指向一个字符.char c = 10; // 1 byteint *p = (int*)&c; // 4 bytes由于这将导致一个指向1字节分配内存的4字节指针,因此向该指针写入将导致运行时错误或覆盖一些相邻内存。*p = 5; // run-time error: stack corruption与C样式的强制转换不同,静态强制转换将允许编译器检查指针和切入点数据类型是否兼容,这允许程序员在编译期间捕获这个不正确的指针分配。int *q = static_cast<int*>(&c); // compile-time error阅读更多内容:静态铸造<>与C型铸造有什么区别?和规则型与静态型与动态型
0
0
0
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
我要回答