【发布时间】:2011-12-08 06:32:05
【问题描述】:
我有以下模板函数,用于将任何标准类型的数据转储到二进制输出流中。
template<typename T> static void
dump ( const T& v, ostream& o ) {
o.write ( reinterpret_cast<const char*>(&v), sizeof(T));
}
我也可以使用 C 风格(const char*)来代替 reinterpret_cast。使用 reinterpret_cast 有什么特别的理由吗?我阅读了其他一些不赞成 reinterpret_cast 的帖子。但是上面的用法是合法的,不能用别的代替吧?
【问题讨论】:
-
我想你知道这样做的后果(结果文件只能由在相同架构上使用相同编译器使用相同选项编译的程序读回)。
-
有人会因为我这么说而打我,但是如果你想要使用 C 风格的转换,你总是可以留下一个你根本无法做到的通用激进评论错过。也必须一些 方法在 C 中找到您的
consts。 ¯|_(ツ)_|¯ 当然你应该注意危险。
标签: c++ casting reinterpret-cast