Odvození třídy z objektu CObject
Tento článek popisuje minimální kroky nezbytné k odvození třídy z třídy CObject.Ostatní CObject třídy články popisují kroky potřebné k využití konkrétní CObject funkce, jako je například serializace a diagnostické podporu ladění.
V diskusích o CObject, často používají termíny "soubor rozhraní" a "implementační soubor".Soubor rozhraní (často označovaný jako soubor záhlaví, nebo.Soubor H) obsahuje deklaraci třídy a dalších informací potřebných pro použití třídy.Implementační soubor (nebo.Soubor CPP) obsahuje definici třídy, jakož i kód, který implementuje členské funkce třídy.Například pro třídu s názvem CPerson, by obvykle vytvoříte soubor rozhraní s názvem osoby.H a implementační soubor s názvem osoby.CPP.Však pro některé malé třídy, které nejsou sdíleny mezi aplikacemi, je někdy jednodušší rozhraní a implementace do jednoho.Soubor CPP.
Můžete zvolit ze čtyř úrovní funkčnosti při odvození třídy z CObject:
Základní funkce: Podpora běhové třídy informace nebo serializace ale zahrnuje diagnostiku paměti řízení.
Podpora běhové třídy informace plus základní funkce.
Podpora běhové třídy informace a dynamické vytvoření plus základní funkce.
Základní funkce a podporu pro běhovou třídou informace, dynamických a serializace.
Třídy určené pro opakované použití (ty, které později poslouží jako základní třídy) by měla obsahovat alespoň běhovou třídou podporu a podporu serializace Pokud se předpokládá nutnosti budoucí serializace.
Zvolte úroveň funkčnosti pomocí specifické deklaraci a implementaci makra v deklaraci a implementaci třídy jsou odvozeny z CObject.
Následující tabulka zobrazuje vztah mezi používá pro podporu serializace a informace o spuštění makra.
Používané pro serializaci a informace o spuštění makra
Použít makro |
CObject::IsKindOf |
CRuntimeClass:: Metoda CreateObject |
CArchive::operator>> CArchive::operator<< |
---|---|---|---|
Základní CObject funkce |
Ne |
Ne |
Ne |
DECLARE_DYNAMIC |
Ano |
Ne |
Ne |
DECLARE_DYNCREATE |
Ano |
Ano |
Ne |
DECLARE_SERIAL |
Ano |
Ano |
Ano |
Chcete-li použít funkci základní třídy CObject
Použít normální syntaxe C++ odvození vaší třídy z CObject (nebo z odvozené třídy z CObject).
Následující příklad ukazuje nejjednodušší případ, odvození třídy z CObject:
class CSimple : public CObject { // add CSimple-specific members and functions... };
Za normálních okolností však můžete chtít přepsat některé z CObjectna členské funkce pro zpracování specifika nové třídy.Například obvykle chcete přepsat Dump funkce CObject výstup ladění stanovit obsah vaší třídy.Podrobné informace o tom, jak přepsat Dump, naleznete v článku Diagnostika: dumpingu obsah objektu.Můžete také přepsat AssertValid funkce CObject poskytnout vlastní testování pro ověření konzistence dat členů třídy objektů.Popis toho, jak přepsat AssertValid, viz MFC ASSERT_VALID a CObject::AssertValid.
V článku Určení úrovně funkčnosti popisuje, jak určit další úrovně funkčnosti, včetně informací o běhové třídy, vytváření dynamických objektů a serializace.