この記事では、 CObject からクラスを派生させるために必要な最小限の手順について説明します。 その他 CObject
クラスの記事では、シリアル化や診断デバッグのサポートなど、特定の CObject
機能を利用するために必要な手順について説明します。
CObject
の説明では、"インターフェイス ファイル" と "実装ファイル" という用語が頻繁に使用されます。 インターフェイス ファイル (多くの場合、ヘッダー ファイルと呼ばれます。H ファイル) には、クラス宣言と、クラスを使用するために必要なその他の情報が含まれています。 実装ファイル (または .CPP ファイル) には、クラス定義と、クラス メンバー関数を実装するコードが含まれています。 たとえば、 CPerson
という名前のクラスの場合、通常は PERSON という名前のインターフェイス ファイルを作成します。H と PERSON という名前の実装ファイル。CPP。 ただし、アプリケーション間で共有されないいくつかの小さなクラスでは、インターフェイスと実装を 1 つに組み合わせる方が簡単な場合があります。CPP ファイル。
CObject
からクラスを派生する場合は、次の 4 つのレベルの機能から選択できます。
基本的な機能: ランタイム クラス情報またはシリアル化はサポートされませんが、診断メモリ管理が含まれます。
基本的な機能とランタイム クラス情報のサポート。
基本的な機能に加えて、ランタイム クラス情報と動的作成のサポート。
基本的な機能に加えて、ランタイム クラス情報、動的作成、シリアル化のサポート。
再利用用に設計されたクラス (後で基底クラスとして機能するもの) には、将来のシリアル化の必要性が予想される場合は、少なくともランタイム クラスのサポートとシリアル化のサポートを含める必要があります。
機能レベルは、 CObject
から派生するクラスの宣言と実装で、特定の宣言マクロと実装マクロを使用して選択します。
次の表は、シリアル化と実行時の情報をサポートするために使用されるマクロ間の関係を示しています。
シリアル化と Run-Time 情報に使用されるマクロ
使用されるマクロ | 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 に関するセクションを参照してください。
「 機能レベルの指定 」では、ランタイム クラス情報、動的オブジェクトの作成、シリアル化など、他のレベルの機能を指定する方法について説明します。