我有以下模板函数用于将任何标准类型的数据转储到二进制输出流中.
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-Style演员阵容的问题在于他们在幕后做了很多事情.有关详细说明,请参见此处:http://anteru.net/2007/12/18/200/
您应该尝试始终使用C -cast,从长远来看,让生活更轻松.在这种情况下,C风格的强制转换的主要问题是你可以编写(char *)(& v),而使用reinterpret_cast时,你需要一个额外的const_cast,所以它更安全一些.另外,您可以使用正则表达式轻松找到reinterpret_cast,这对于C风格的演员表是不可能的.
标签:reinterpret-cast,c,casting 来源: https://codeday.me/bug/20190927/1824840.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。