次の方法で共有


CObject からのクラスの派生

この記事では、 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 機能を使用するには

  1. 通常の C++ 構文を使用して、 CObject から (または CObject から派生したクラスから) クラスを派生させます。

    次の例は、最も単純なケースである、 CObjectからのクラスの派生を示しています。

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

ただし、通常は、 CObjectのメンバー関数の一部をオーバーライドして、新しいクラスの詳細を処理することができます。 たとえば、通常、クラスの内容にデバッグ出力を提供するために、CObjectDump関数をオーバーライドすることができます。 Dumpをオーバーライドする方法の詳細については、オブジェクト ダンプのカスタマイズに関する記事を参照してください。 また、CObjectAssertValid関数をオーバーライドして、クラス オブジェクトのデータ メンバーの一貫性を検証するためのカスタマイズされたテストを提供することもできます。 AssertValidをオーバーライドする方法の詳細については、MFC ASSERT_VALIDと CObject::AssertValid に関するセクションを参照してください。

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

こちらも参照ください

CObject の使用