例如,在 MSDN 文档中随处可见以下强制转换:
(LPTSTR)&lpMsgBuf
我是否应该将其转换为:
static_cast<LPTSTR>(&lpMsgBuf);
或者我是否应该保留所有惯用的 C 风格 Win32 部分,因为它们通常在文档中找到,并为我的其余代码保留更惯用的 C++ 样式/用法?
最佳答案
引入新样式强制转换是有原因的:它们更安全、更具解释性/ self 注释、更易于查看并且更易于 grep 查找。
所以使用它们。
更详细的解释,我们的意思是你不能只是转换为某物,你必须说为什么你正在转换(我在继承层次结构(dynamic_cast)中转换,我的转换是实现定义的并且可能不可移植(reinterpret_cast),我正在抛弃常量(const_cast)等)。
它们故意又长又丑,以便强制转换在读者面前跳出来(并阻止使用过多强制转换的编程风格)。
它们更安全,因为,例如,你不能在没有明确这样做的情况下放弃常量。
关于c++ - 在现代 C++ 应用程序中使用 Win32 代码时,是否应该使用正确的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791953/