從 CObject 衍生類別
本文說明衍生自 CObject類別的最低需求步驟。 其他 CObject 類別文件說明採用指定 CObject 功能的優點所需的步驟,如序列化和診斷偵錯支援。
在 CObject的相關討論中,經常使用詞彙「介面檔案」及「實作檔」。 介面檔 (通常稱為標頭檔或 .H 檔案) 包含使用類別必要的類別宣告和任何其他資訊。 實作檔 (或 .CPP 檔案) 包含類別定義和實作類別成員函式的程式碼。 例如,針對名為 CPerson 的類別,您通常會建立名為 PERSON.H 介面檔案及名為 PERSON.CPP 的實作檔案。 不過,對於一些不在應用程式之間共用的小類別,合併介面和時做成一個單一的 .CPP 檔案有時會比較簡單。
當從 CObject 衍生類別時,您可以從功能的四層選取:
基本功能:對直行接端費別資訊或序列化未支援,但不包括診斷記憶體管理。
基本功能加上支援執行階段類別資訊。
基本功能加上支援執行階段類別資訊和動態建立。
基本功能加上支援執行階段類別資訊、動態建立和序列化。
類別設計為重複使用 (以便稍後做為基底類別) 應該至少包含執行階段類別支援和序列化支援,如果任何未來的序列化需求被期待。
您可以使用衍生自 CObject 類別的宣告和實作中的特定宣告和實作巨集,選取層級功能。
下表顯示用來支援序列化和執行階段資訊的巨集之間的關聯性。
用來序列化和執行階段資訊的巨集
使用的巨集 |
CObject::IsKindOf |
CRuntimeClass CreateObject |
CArchive::operator>> CArchive::operator<< |
---|---|---|---|
基礎 CObject 的功能。 |
沒有 |
沒有 |
沒有 |
DECLARE_DYNAMIC |
有 |
沒有 |
沒有 |
DECLARE_DYNCREATE |
有 |
有 |
沒有 |
DECLARE_SERIAL |
有 |
有 |
有 |
使用基礎 CObject 功能
使用標準 C++ 語法從 CObject 衍生您自己的類別 (或從衍生自 CObject的類別)。
下列範例顯示最簡單的情況下,衍生自 CObject 的類別:
class CSimple : public CObject { // add CSimple-specific members and functions... };
不過,通常您可以覆寫一些 CObject 成員函式來處理您新類別的特性。 例如,您可能通常要覆寫 CObject 的 Dump 函式為您的類別內容提供偵錯輸出。 如需如何覆寫 Dump的詳細資料,請參閱本文件的 診斷:傾印物件內容。。 您可能也要覆寫 CObject 的 AssertValid 函式提供自訂的測試驗證類別物件的資料成員的一致性。 如需描述如何覆寫 AssertValid,請參閱 MFC ASSERT_VALID 和 CObject::AssertValid。
指定層級的功能 文章說明如何指定其他層級功能,包括執行階段類別資訊、動態物件建立和序列化。