Odvození třídy z objektu CObject
Tento článek popisuje minimální kroky potřebné k odvození třídy z objektu CObject. Další CObject
články třídy popisují kroky potřebné k využití konkrétních CObject
funkcí, jako je podpora serializace a diagnostického ladění.
V diskusích CObject
se často používají termíny "soubor rozhraní" a "implementační soubor". Soubor rozhraní (často označovaný jako hlavičkový soubor nebo . H soubor) obsahuje deklaraci třídy a všechny další informace potřebné k použití třídy. Soubor implementace (nebo . CPP soubor) obsahuje definici třídy a také kód, který implementuje členské funkce třídy. Například pro třídu s názvem CPerson
byste obvykle vytvořili soubor rozhraní s názvem PERSON. H a implementační soubor s názvem PERSON. CPP. Nicméně, pro některé malé třídy, které nebudou sdíleny mezi aplikacemi, je někdy jednodušší kombinovat rozhraní a implementace do jednoho . CPP soubor.
Při odvození třídy CObject
z:
Základní funkce: Žádná podpora informací o třídě za běhu nebo serializace, ale zahrnuje správu diagnostických paměti.
Základní funkce a podpora informací o třídách za běhu
Základní funkce a podpora informací o třídách za běhu a dynamického vytváření
Základní funkce a podpora informací o třídách za běhu, dynamického vytváření a serializace
Třídy navržené pro opakované použití (ty, které později budou sloužit jako základní třídy), by měly aspoň zahrnovat podporu a serializaci za běhu, pokud se očekává jakákoli budoucí potřeba serializace.
Úroveň funkčnosti zvolíte pomocí specifických deklarací a implementačních maker v deklaraci a implementaci tříd odvozených z CObject
.
Následující tabulka ukazuje vztah mezi makry používanými k podpoře serializace a informací o době běhu.
Makra používaná pro serializaci a informace o době běhu
Použité makro | Objekt CObject::IsKindOf | CRuntimeClass:: CreateObject |
CArchive::operator>> CArchive::operator<< |
---|---|---|---|
Základní CObject funkce |
Číslo | No | No |
DECLARE_DYNAMIC |
Ano | No | No |
DECLARE_DYNCREATE |
Ano | Ano | Ne |
DECLARE_SERIAL |
Ano | Ano | Ano |
Použití základních funkcí CObject
Použijte normální syntaxi jazyka C++ k odvození třídy (
CObject
nebo z třídy odvozené odCObject
).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í ale můžete chtít některé členské CObject
funkce přepsat, aby zvládly specifika vaší nové třídy. Můžete například obvykle chtít přepsat Dump
funkci CObject
poskytnutí výstupu ladění pro obsah vaší třídy. Podrobnosti o přepsání Dump
naleznete v článku Přizpůsobení výpisu stavu objektu. Můžete také přepsat AssertValid
funkci poskytnutí přizpůsobeného CObject
testování, abyste ověřili konzistenci datových členů objektů třídy. Popis postupu přepsání AssertValid
naleznete v tématu MFC ASSERT_VALID a CObject::AssertValid.
Článek Určení úrovní funkčnosti popisuje, jak určit další úrovně funkcí, včetně informací o třídě za běhu , dynamického vytváření objektů a serializace.