Sdílet prostřednictvím


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 CObjectse č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 CPersonbyste 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 CObjectz:

  • 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

  1. Použijte normální syntaxi jazyka C++ k odvození třídy ( CObject nebo z třídy odvozené od 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í ale můžete chtít některé členské CObjectfunkce 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í Dumpnaleznete 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í AssertValidnaleznete 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.

Viz také

Použití objektů CObject