從 CObject 衍生類別
本文說明從 CObject 衍生類別所需的最低步驟。 其他 CObject
類別文章說明利用特定 CObject
功能所需的步驟,例如序列化和診斷偵錯支援。
在 的討論中 CObject
,經常使用「介面檔案」和「實作檔案」一詞。 介面檔案 (通常稱為 標頭檔或 。H 檔案) 包含類別宣告,以及使用 類別所需的任何其他資訊。 實作檔 (或 。CPP 檔案包含類別定義,以及實作類別成員函式的程式碼。 例如,針對名為 CPerson
的類別,您通常會建立名為 PERSON 的介面檔案。H 和名為 PERSON 的實作檔案。Cpp。 不過,對於一些不會在應用程式之間共用的小型類別,有時候將介面和實作合併成單一 會比較容易。CPP 檔案。
從 衍生類別 CObject
時,您可以選擇四種功能層級:
基本功能:不支援執行時間類別資訊或序列化,但包含診斷記憶體管理。
基本功能加上執行時間類別資訊的支援。
基本功能加上執行時間類別資訊和動態建立的支援。
基本功能加上執行時間類別資訊、動態建立和序列化的支援。
專為重複使用而設計的類別(稍後將做為基類的類別)至少應該包含執行時間類別支援和序列化支援,如果預期未來有任何序列化需求。
您可以在衍生自 CObject
的類別宣告和實作中使用特定宣告和實作宏來選擇功能層級。
下表顯示用來支援序列化和執行時間資訊的宏之間的關聯性。
用於序列化和執行時間資訊的宏
使用的宏 | CObject::IsKindOf | CRuntimeClass:: CreateObject |
CArchive::operator>> CArchive::operator<< |
---|---|---|---|
基本 CObject 功能 |
No | No | 否 |
DECLARE_DYNAMIC |
是 | 否 | 否 |
DECLARE_DYNCREATE |
是 | 是 | 否 |
DECLARE_SERIAL |
是 | Yes | Yes |
使用基本 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 。
指定功能 層級一文 說明如何指定其他層級的功能,包括執行時間類別資訊、動態物件建立和序列化。