类对象的序列化

时间:2011-10-20 03:48:19

标签: c++ serialization

class MyClass {
public:
  MyClass(int X= 0; int Y= 0) { /*...*/ }
private:
   int x;
   int y;
};

我正在努力避免在这个简单的类中使用boost :: serialization库的开销。所以,做这样的事情是否有效:

  MyClass Obj(43, 64);
  char *c = (char*)&Obj; // ok?
  // write to file

1 个答案:

答案 0 :(得分:2)

将对象作为指针投射将无法执行您想要的操作。将其地址强制转换为指向char:(char*)&Obj或更好reinterpret_cast<char*>( &Obj );的指针是有效的。实际上访问该指针以存储原始数据,然后从中加载它不能保证按标准工作。复杂对象的内存布局取决于实现。如果POD类型的类(我认为C ++ 11现在称它们为标准布局类),那将是标准行为。