为什么使用静态_CAST<int>(X)而不是(Int)x?我听说static_cast功能应优先于C型或简单功能型铸造.这是真的吗?为什么?
3 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
总之:
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
- 3 回答
- 0 关注
- 1455 浏览
添加回答
举报
0/150
提交
取消