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