类对象的序列化

Serialization of class object

本文关键字:序列化 对象      更新时间:2023-10-16
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

将对象强制转换为指针不会达到您想要的效果。将其地址转换为指向char: (char*)&Obj或更好的reinterpret_cast<char*>( &Obj );的指针是有效的。实际上,访问该指针来存储原始数据,然后从它加载,这并不能保证标准的工作。复杂对象的内存布局依赖于实现。如果类是POD类型(我认为c++ 11现在称它们为标准布局类),这将是标准行为。