共用方式為


從 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 功能

  1. 使用一般 C++ 語法從 衍生類別(或衍生自 CObject 的類別) 衍生您的 CObject 類別。

    下列範例顯示最簡單的案例,從 衍生類別 CObject

    class CSimple : public CObject
    {
       // add CSimple-specific members and functions...
    };
    

不過,一般而言,您可能想要覆寫某些 CObject 成員函式來處理新類別的特定資料。 例如,您可能想要覆寫 的 DumpCObject 函式,以提供 類別內容的偵錯輸出。 如需如何覆寫 的詳細資訊,請參閱物件傾印 Dump 自訂 一文 。 您也可以覆寫 的 函 AssertValidCObject ,以提供自訂的測試,以驗證類別物件之資料成員的一致性。 如需如何覆寫 AssertValid 的描述,請參閱 MFC ASSERT_VALID 和 CObject::AssertValid

指定功能 層級一文 說明如何指定其他層級的功能,包括執行時間類別資訊、動態物件建立和序列化。

另請參閱

使用 CObject