私は次の機能を持っています:
void IBinary::writeb( std::ostream& out, double x )
{
out.write( (char*)&(x), sizeof(double) );
}
これは のアドレスを受け取り、xそれを 型のポインタにキャストしますchar*。ファイルにa を書き込んでいても、 の最初の引数がどのように/なぜwritetypeであるかがわかりません。関数にはいくつかのオーバーロードがあり、それらはすべて a にキャストされます。char*doublewritebchar*
それは次のものと同等ではありませんか:
double x = 3.14;
char* c;
c = (char*)&(x); // ah!
私の推測では、doubletoのサイズも渡しているため、これはうまくいくと思いostream::writeます。私のコンピュータでは のサイズcharは 1 バイトですが、常にそうであるとは限りません。
では、どのような型の変数が記述されていても、 の最初の引数が a をostream::write期待するのはなぜでしょうか?char*