【发布时间】:2019-09-04 20:08:31
【问题描述】:
我看到这通常用于文件处理,(char*)&obj。 自 C++11 以来有很多可用的转换方法,比如静态转换,我们不能在这些方法上使用一种吗?
【问题讨论】:
-
它基本上用于一次只传输一个字节的数据,它的行为本质上类似于
reinterpret_cast。 -
有些人认为应该在这种情况下使用
reinterpret_cast,其他人则使用C风格的演员表。 (我在reinterpret_cast阵营。)这归结为风格问题和您团队的惯例。使用最适合您的团队的方法。我更喜欢更详细的风格,因为这样我可以更轻松地grep。 -
"常用于文件处理,(char*)&obj"。你能在这里举个例子吗?在很多情况下可以省略对
(char*)的强制转换。如果二进制写入需要char*,我认为这是一个设计错误。这些函数应该取void *。 -
@geza FWIW,
std::basic_ifstream::read使用char *。 -
另请阅读 this,了解
()(也称为 C 风格的演员表)如何在 C++ 中工作。
标签: c++ c++11 file-handling