有人可以解释下面代码第二行的含义吗?
Book *B;
B=(Book *)new char[sizeof(Book)];
f1.read((char*)B,sizeof(Book));
这是我发现将类Book(包含std::strings
)的对象写入文件的建议之一。
PS:它有效!!
答案 0 :(得分:1)
您包含的代码不会"写对象。"它从f1
读取一个字节数组。
该代码也不正确C ++。您可以从不执行包含其他对象的C ++对象的字节副本,因为它们可能包含指针或虚函数表。从文件中复制它们更糟糕,因为指针将指向甚至不再存在的内存。而且,仅供参考,std::string
肯定有一个指针。