從 CObject 衍生出類別
本文將告訴您衍生類別中的所需的最小步驟 CObject。 其他CObject類別的文件將說明如何利用特定CObject功能,例如序列化和診斷的偵錯支援。
在 [討論區的CObject,較常使用的詞彙"介面檔案 」 和 「 實作檔案 」。 介面檔 (通常稱為標頭檔,或。H 檔) 包含在類別宣告和使用類別所需的任何其他資訊。 實作檔 (或。CPP 檔案) 包含在類別定義,以及實作類別成員函式的程式碼。 例如,對於類別,名為CPerson,您通常會建立一個名為個人的介面檔。H 和實作檔名為個人。CPP。 不過,對於某些將無法在應用程式之間共用的小型類別,有時候是結合介面與實作在單一的工作變得更容易。CPP 檔案中。
衍生類別中的時,您可以選擇的四個功能層級CObject:
基本功能: 不支援的 run-time 類別資訊或序列化,但包括診斷記憶體管理。
基本功能和支援 run-time 類別資訊的內容。
基本功能和 run-time 類別資訊和動態建立支援的內容。
基本功能和支援 run-time 類別資訊、 動態建立和序列化的內容。
以供重複使用 (即要稍後再做為基底類別) 所設計的類別應該至少包含 run-time 類別支援與序列化支援,如果預期會有所未來序列化需要。
您選擇的功能層級使用的宣告和實作的衍生類別中的特定宣告和實作巨集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的成員函式來處理您的新類別的細節而定。 比方說,您通常可以覆寫Dump函式的CObject為您的類別的內容提供偵錯輸出。 如需詳細資訊,有關如何覆寫Dump,請參閱文件診斷: 傾印物件內容。 您也可以覆寫AssertValid函式的CObject來提供自訂的測試,驗證資料成員的類別物件的一致性。 如需說明如何覆寫的AssertValid,請參閱 MFC ASSERT_VALID 和 CObject::AssertValid。
發行項指定功能層級說明如何指定其他層級的功能,包括執行階段類別資訊、 動態物件建立和序列化。