Share via


CObject からのクラスの派生

更新 : 2007 年 11 月

ここでは CObject からクラスを派生するために最低限必要な手順を説明します。シリアル化や診断デバッグのサポートなど、CObject の特定の機能の利用方法については、ほかの CObject クラス関連項目で説明します。

CObject の説明では、"インターフェイス ファイル" と "実装ファイル" という用語を頻繁に使用します。インターフェイス ファイルはヘッダー ファイルまたは .H ファイルとも呼ばれます。このファイルの内容は、クラスの宣言とクラスを使うときに必要な情報です。実装ファイルは .CPP ファイルとも呼ばれます。このファイルの内容は、クラスの定義とメンバ関数の実装コードです。たとえば、CPerson クラスを新規作成するには、インターフェイス ファイル PERSON.H と実装ファイル PERSON.CPP を作成します。ただし、アプリケーション間で共有しない小さなクラスの場合は、インターフェイス ファイルと実装ファイルを 1 つの .CPP ファイルにまとめる方が簡単です。

CObject からクラスを派生するときは、継承する機能を次の 4 つのレベルから選択できます。

  • 基本機能のみ。メモリの診断機能は含まれますが、ランタイム クラス情報とシリアル化機能はサポートされません。

  • 基本機能とランタイム クラス情報のサポート。

  • 基本機能、およびランタイム クラス情報と動的生成のサポート。

  • 基本機能、およびランタイム クラス情報、動的生成、シリアル化のサポート。

再利用を目的としたクラス (後でほかの基本クラスとして使用するクラス) を作成するには、少なくともランタイム クラス情報をサポートする必要があります。また、将来シリアル化を予定している場合は、シリアル化のサポートも必要です。

機能の継承レベルを選択するには、CObject からの派生クラスの宣言および実装において、該当する宣言マクロと実装マクロを使用します。

次の表は、シリアル化およびランタイム クラス情報をサポートするマクロの一覧です。

シリアル化およびランタイム クラス情報用のマクロ

使用するマクロ

CObject::IsKindOf

CRuntimeClass::

CreateObject

CArchive::operator >>

CArchive::operator <<

CObject の基本機能

×

×

×

DECLARE_DYNAMIC

×

×

DECLARE_DYNCREATE

×

DECLARE_SERIAL

CObject の基本機能だけを使用するには

  • 通常の C++ の構文で、CObject (またはその派生クラス) からクラスを派生します。

    次に、CObject からクラスを派生する最も簡単な例を示します。

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

通常は、CObject のメンバ関数の一部をオーバーライドして派生クラス固有の機能を追加します。たとえば、クラスの内容をデバッグ出力するときは、CObject の関数 Dump をオーバーライドします。Dump のオーバーライド方法については、「オブジェクト ダンプのカスタマイズ」を参照してください。また、クラス オブジェクトのデータ メンバの一貫性を検証するには、CObject の関数 AssertValid をオーバーライドしてテスト方法をカスタマイズします。AssertValid をオーバーライドする方法については、「MFC ASSERT_VALID および CObject::AssertValid」を参照してください。

継承機能のレベルの指定」では、ランタイム クラス情報、オブジェクトの動的生成、シリアル化などの機能を指定する方法について説明します。

参照

概念

CObject の使い方