2011-10-20 97 views
0
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 

回答

2

作为一个指针铸造你的对象不会做你想做的。将其地址转换为指向char的指针是有效的:(char*)&Obj或更好,但是reinterpret_cast<char*>(&Obj);。实际上,访问该指针来存储原始数据,并在以后加载时不能保证该标准能够工作。复杂对象的内存布局取决于实现。如果POD类型的类(我认为C++ 11现在称之为标准布局类)就是标准行为。