Des*_*ume 9 c++ primitive casting coding-style
是什么让这个
long l = 1;
char c = static_cast<char>(l);
float f = 1.0f;
int i = static_cast<int>(f);
Run Code Online (Sandbox Code Playgroud)
比这更好
long l = 1;
char c = (char)l;
float f = 1.0f;
int i = (int)f;
Run Code Online (Sandbox Code Playgroud)
何时将一个原始数据类型转换为另一个?
我有很多遗留代码在类似的情况下使用第二种样式进行类型转换,所以这也是一个问题,我是否可以不执行该代码的全面修订.
R. *_*des 23
面向未来.
让我们说将来我这样做:
float blah = 1.0f;
float* f = &blah;
Run Code Online (Sandbox Code Playgroud)
现在,int i = static_cast<int>(f);停止编译,但int i = (int)f;做了一个reinterpret_cast.
static_cast<int>就是这正是我要你做.(int)是做什么,你可以给我弄一个int.对于后者,编译器将不遗余力地为您获取int值,而这很少(从不?)是可取的.
是的你应该.
演员阵容是错误的主要来源.它们是类型系统的方法,它是程序员可以使用的最好的错误捕获程序之一.
static_cast 比旧的c风格的演员更加明显和更具体.你希望他们脱颖而出.在调试时,您希望它们显而易见.你希望下一个程序员能够理解你为什么要这样做.
它更难打字的事实static_cast<blah>(foo)也是一个好处,因为它会鼓励你只在绝对必要的情况下施放.