Freigeben über


Ableiten einer Klasse von CObject

Dieser Artikel beschreibt die minimale Schritte, die erforderlich sind, eine Klasse von CObject ableiten. Andere CObject-Klassenartikel beschreiben die Schritte, die erforderlich sind, um bestimmte CObject-Funktionen, z Serialisierung und Diagnosendebugunterstützung zu nutzen.

Während der Erörterung CObject, schließen die Begriffe "Datei" an und "Implementierungsdatei" werden häufig verwendet. Die Schnittstellendatei (häufig aufgerufen die Headerdatei oder. H-Datei) enthält die Klassendeklaration sowie beliebige andere Informationen, die erforderlich sind, um die Klasse zu verwenden. Die CPP-Datei Implementierungsdatei (oder die) enthält die Klassendefinition sowie den Code, der die Klassenmemberfunktionen implementiert. Beispielsweise für eine Klasse mit dem Namen CPerson, wird normalerweise eine Schnittstellendatei erstellen, die PERSON.H und benannt wurde, PERSON.CPP Implementierungsdatei benannte. Für einige kleine Klassen, die nicht in Anwendungen verwendet werden, ist es auch einfacher, die Schnittstelle und Implementierung in eine einzelne CPP-Datei zu kombinieren.

Sie können von vier Ebenen Funktionen auswählen, wenn eine Klasse von CObject abgeleitet wurde:

  • Grundlegende Funktionalität: Keine Unterstützung für Ablaufklasseninformationens- oder Serialisierung jedoch Einschließungsdiagnosenspeicherverwaltung.

  • Grundlegende Funktionalität sowie Unterstützung für Ablaufklasseninformationen.

  • Grundlegende Funktionalität sowie Unterstützung für Ablaufklasseninformationen und dynamische Erstellung.

  • Grundlegende Funktionalität sowie Unterstützung für Ablaufklasseninformationen, dynamische Erstellung und Serialisierung.

Die Klassen, die zur Wiederverwendung vorgesehen sind (die, die später als Basisklassen dient), sollten Ablaufklassenunterstützung und Serialisierungsunterstützung mindestens beinhalten, wenn überhaupt zukünftige Serialisierungsanforderung werden vorweggenommen.

Sie wählen das Niveau der Funktionen, indem Sie bestimmte Deklarations- und Implementierungsmakros in der Deklaration und die Implementierung von Klassen verwenden, die Sie von CObject ableiten.

In der folgenden Tabelle wird die Beziehung zwischen Makros an, die zur Stützserialisierung und auf die Laufzeitinformationen verwendet werden.

Makros verwendet Serialisierung und Laufzeit-Information

Makro verwendet

CObject::IsKindOf

CRuntimeClass::

CreateObject

CArchive::operator >>

CArchive::operator <<

Grundlegende Funktionalität CObject

nein

nein

nein

DECLARE_DYNAMIC

ja

nein

nein

DECLARE_DYNCREATE

ja

ja

nein

DECLARE_SERIAL

ja

ja

ja

So grundlegende CObject-Funktionalität verwenden

  • Verwenden Sie die normale C++-Syntax, um die Klasse von CObject abgeleitet (oder einer Klasse abgeleitet von CObject).

    Im folgenden Beispiel wird den einfachsten Fall, die Ableitung einer Klasse von CObject:

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

Normalerweise jedoch sollten mehrere von CObject-Memberfunktionen überschreiben, um die spezifischen Eigenschaften der neuen Klasse behandeln. Beispielsweise können Sie normalerweise die Dump-Funktion von CObject überschreiben, damit sowohl für den Inhalt der Klasse bereitzustellen. Ausführliche Informationen, wie Dump, finden Sie im Artikel Diagnose: Sichern des Objekt-Inhalts. Sie können auch die AssertValid-Funktion von CObject überschreiben, damit benutzerdefinierte Tests bereitstellen, um die Konsistenz der Datenmember der Klassenobjekte zu überprüfen. Eine Beschreibung von, wie AssertValid, finden Sie unter MFC ASSERT_VALID und CObject::AssertValid.

Der Artikel Angeben von Ebenen der Funktionalität beschreibt, wie anderen Ebenen der Funktionalität, einschließlich Ablaufklasseninformationen, Erstellung dynamischer Objekte und Serialisierung angibt.

Siehe auch

Konzepte

Verwenden von CObject