类对象的序列化
Serialization of class object
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现在称它们为标准布局类),这将是标准行为。
相关文章:
- 提升反序列化对象具有 nan 或 -nan 值
- 在 cpp 中的平面缓冲区中序列化对象
- 将 boost 序列化对象的 asio::streambuf 表示转换为 Beast 的 DynamicBody req.body()
- 从一个文件中读取多个序列化对象
- 具有GSOAP的序列化对象,以验证Web服务输出
- 促进序列化对象为json
- 使用 FlatBuffers 序列化对象的向量
- 是否可以简单地序列化C++对象
- C 用向量序列化对象会导致双重自由损坏
- 用C++序列化对象的首选方式
- 序列化C++对象
- 如何在不存在任何数据损坏风险的情况下序列化对象
- 如何使用boost::序列化将对象的矢量作为属性序列化对象
- C++:如何在不使用库的情况下序列化/反序列化对象
- 写入函数是否在 C++ 中使用 ASCII 序列化对象
- 如何从 QDataStream 中读取多个相同类型的序列化对象
- 在C++中反序列化对象
- 在Qt中序列化对象图有哪些方法
- 使用 mixins 序列化/反序列化对象
- 序列化对象时丢失名称