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