比較のために、memcpyでも同じことが言えます。
#include <cstring>
int r = rand();
boost::array<char, sizeof(int)> send_buf;
std::memcpy(&send_buf[0], &r, sizeof(int));
キャストの爆発的増加(およびそれらを誤解する機会)が、Cにも存在する関数を使用するC++の「罪」よりも良いか悪いかというあなたの呼びかけ;-)
個人的には、C ++スタイルのキャストが優れた「アラーム」であるのと同じ理由で、この種の操作には非常に優れた「アラーム」だと思いますmemcpy
(読みながら見つけやすく、検索しやすい)。ただし、すべてに同じアラームを設定することをお勧めします。その場合は、の引数をmemcpy
にキャストできますvoid*
。
ところで、私はsizeof r
ではなく両方のサイズに使用するかもしれませんがsizeof(int)
、コンテキストが配列が「r(たまたまint)に対して十分な大きさ」であるか「intと同じサイズ(rたまたま)」。r
これは送信バッファであるため、バッファはワイヤプロトコルが要求するサイズであり、その逆ではなく、バッファと一致することになっていると思います。したがってsizeof(int)
、おそらく適切ですが4
、PROTOCOL_INTEGER_SIZE
それでもなお適切である可能性があります。