複製鏈接
請複製以下鏈接發送給好友

serialize

鎖定
serialize是指從檔案文件中讀取該對象或向檔案文件中寫入該對象的函數
外文名
serialize
屬    性
計算機術語

serialize函數原型

CObject::Serialize
virtual void Serialize(CArchive&ar);
throw(CMemoryException);
throw(CArchiveException);
throw(CFileException);
參數:
ar 被串行化的CArchive對象。

serialize函數説明

從檔案文件中讀取該對象或向檔案文件中寫入該對象。
必須為希望串行化的每個類覆蓋Serialize。被覆蓋的Serialize首先必須調用基類的Serialize函數。
在類的聲明中必須使用DECLARE_SERIAL宏,並且在類的執行過程中也必須使用IMPLEMENT_SERIAL宏。
使用CArchive::IsLoading或CArchive::IsStoring函數,用於決定是否裝載或存儲了檔案文件。
通過CArchive::ReadObject和CArchive::WriteObject來調用Serialize函數。這些函數與CArchive插入操作符()相關聯。
如果要了解有關串行化的例子,請參閲聯機文檔“Visual C++程序員指南” 中的“串行化(對象永久化)”。

serialize序列化

1. 該類需要從CObject類派生(可以是間接派生);
2. 在類中進行DECLARE_SERIAL宏定義
3. 類存在有缺省的構造函數
4. 類中實現了Serialize()函數,並且在其中調用基類的序列化函數;
5. 使用IMPLEMENT_SERIAL宏指明類名及版本號;

serialize作用侷限

序列化簡化了對象的保存和載入,為對象提供了持久性。但是,序列化本身仍具有一定的侷限性。由於序列化一次從文件中載入所有對象,因此,它不適合於大文件編輯器和數據庫。對於數據庫和大文件編輯器,它們每次只是從文件中讀入一部分。此時,就不應該採用文檔的序列化機制來直接讀取和保存文件了。另外,使用外部文件格式(預先定義的文件格式而不是本應用程序定義的文件格式)的程序一般也不使用文檔的序列化。

serialize示例

請參閲ObList::CObList,瞭解所有CObject示例中使用的CAge類。
// example for CObject::Serialize
void CFileSerializeDoc::Serialize(CArchive& ar){
if (ar.IsStoring()){
ar<<m_sizeDoc; //m_sizeDoc信息序列化到ar
}else{
ar>>m_sizeDoc; //ar序列化到m_sizeDoc
}
m_strokeList.Serialize(ar);//序列化m_strokeList
}