2011-10-20 96 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現在稱之爲標準佈局類)就是標準行爲。