我有以下功能:
void IBinary::writeb( std::ostream& out, double x )
{
out.write( (char*)&(x), sizeof(double) );
}
这将获取 的地址x并将其转换为 type 的指针char*。我不明白第一个参数如何/为什么write是 type char*,即使我正在将 a 写入double文件。writeb该函数有几个重载,所有重载都转换为char*.
那不就相当于:
double x = 3.14;
char* c;
c = (char*)&(x); // ah!
我的猜测是这行得通,因为我们也传递了doubleto的大小ostream::write。在我的计算机上,大小char为 1 字节,但这并不总是正确的。
因此,为什么无论写入什么类型的变量, ostream::writeexpect的第一个参数都是?char*