Třídy jazyka Visual C++ v návrháři tříd
Třída Návrhář podporuje C++ třídy a visualizes nativního C++ tříd stejným způsobem jako obrazce třídy jazyka Visual Basic a Visual C#, s výjimkou, že tříd C++ může mít více vztahy dědičnosti.Obrazec Třída zobrazit další pole a metody třídy nebo sbalit šetřit místo můžete rozbalit.
[!POZNÁMKA]
Návrhář třída nepodporuje odborů (zvláštní typ třídy, ve které přidělené paměti je pouze množství nezbytné pro největší datový člen unie).
Jednoduché dědičnosti
Přetáhnout více než jedné třídy diagram třídy a třídy mají vztah dědičnosti třídy, je šipka připojuje.Šipka ukazuje směrem základní třídy.Například v diagramu třídy jsou zobrazeny následující třídy, šipka připojí, přejdete z B A:
class A {};
class B : A {};
Diagram třídy také přetáhnout pouze třídy B, B pravým tlačítkem myši na obrazec Třída a klepněte na tlačítko Zobrazit třídy Base.Zobrazí základní třída: A.
Vícenásobné dědění
Třída Návrhář podporuje vizualizace vztahy dědičnosti více tříd.Vícenásobné dědění při odvozená třída má atributy více než jeden základní třídy.Následuje příklad vícenásobné dědění:
class Bird {};
class Swimmer {};
class Penguin : public Bird, public Swimmer {};
Přetáhnout více než jedné třídy diagram třídy a třídy mají vztah dědičnosti více tříd, je šipka připojuje.Šipka ukazuje směrem základní třídy.
Pravým tlačítkem myši na obrazec Třída a klepnutím na Zobrazit základní třídy zobrazí základní třídy pro vybrané třídy.
[!POZNÁMKA]
Zobrazit odvozené třídy příkaz není podporován pro kód jazyka C++.Odvozené třídy lze zobrazit přepnutím do třídy zobrazení, rozbalení uzlu typu rozbalení Odvozené typy podsložky a pak přetáhněte do diagramu třídy těchto typů.
Další informace o dědičnosti více třídy, viz Vícenásobná dědičnost a Vícenásobné třídy Base.
Abstraktní třídy
Třída Návrhář podporuje abstraktní třídy (nazývaná také "abstraktní základní třídy").Jsou třídy, která nikdy konkretizovat, avšak ze kterých můžete odvodit další třídy.Pomocí například "Vícenásobné dědění" dříve v tomto dokumentu mohou konkretizujete Bird třídy jako jednotlivé objekty takto:
int main()
{
Bird sparrow;
Bird crow;
Bird eagle;
}
Však pravděpodobně není hodláte vytvořit instanci Swimmer třídy jako jednotlivé objekty.Pravděpodobně chcete pouze pro jiné druhy zvířat tříd, například Penguin, Whale, a Fish.V takovém případě by deklarovat Swimmer třídy jako základní třídy.
Chcete-li deklarovat jako abstraktní třídy, můžete abstract klíčové slovo.Členové označeny jako abstraktní nebo zahrnuté v abstraktní třídy jsou virtuální a musí být prováděna tříd, které vyplývají z abstraktní třídy.
class Swimmer abstract
{
virtual void swim();
void dive();
};
Třídy můžete také deklarovat jako abstraktní, včetně alespoň jednu čistého virtuální funkci:
class Swimmer
{
virtual void swim() = 0;
void dive();
};
Při zobrazení těchto prohlášení v diagramu třídy název třídy Swimmer a její čistý virtuální funkce swim v zobrazených kurzívou ve tvaru abstraktní třída spolu s zápis Abstraktní třída.Všimněte si obrazec Typ abstraktní třídy je stejný jako běžné třídy, tečkovaná čára je však jeho ohraničení.
Třída odvozená ze základní třídy musí přepsat každého čistého virtuální funkce v základní třídě nebo odvozené třídy nelze vytvořit instanci.Ano, například pokud je odvozena Fish z třídy Swimmer třídy, Fish musí přepsat swim metoda:
class Fish : public Swimmer
{
void swim(int speed);
};
int main()
{
Fish guppy;
}
Při zobrazení tento kód v diagramu třídy Class Designer nakreslí dědičnosti z Fish na Swimmer.
Anonymní třídy
Třída Návrhář podporuje anonymní třídy.Třída anonymní typy třídy jsou deklarovány bez identifikátoru.Tyto nemůže mít konstruktor nebo destructor, nemůže být předány jako argumenty funkce a nemůže být vráceno jako vrácené hodnoty funkce.Anonymní třídy lze nahradit názvem třídy typedef, jako v následujícím příkladu:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Také může být anonymní struktury.Třída Návrhář zobrazí anonymní třídy a struktur, stejně jako zobrazení příslušného typu.Ačkoli můžete deklarovat a zobrazit anonymní třídy a struktur, třídy Designer nebude používat název značky, který určíte.Název, který generuje zobrazení třídy bude používat.Třídy nebo struktury se objeví v zobrazení třídy a třídy Návrhář jako element nazvaný __unnamed.
Další informace o anonymní třídy, viz Anonymní typy třídy.
Šablona třídy
Třída Návrhář podporuje vizualizace šablonu třídy.Jsou podporovány vnořené prohlášení.Následující tabulka ukazuje některé typické prohlášení.
Prvek kódu |
Třída Návrhář zobrazení |
---|---|
template <class T> class A {}; |
A<T> Šablona třídy |
template <class T, class U> class A {}; |
A<T, U> Šablona třídy |
template <class T, int i> class A {}; |
A<T, i> Šablona třídy |
template <class T, template <class K> class U> class A {}; |
A<T, U> Šablona třídy |
V následující tabulce jsou uvedeny příklady částečné specializace.
Prvek kódu |
Třída Návrhář zobrazení |
---|---|
template<class T, class U> class A {}; |
A<T, U> Šablona třídy |
template<class T> class A<T, T> {}; |
A<T, T> Šablona třídy |
template <class T> class A<T, int> {}; |
A<T, int> Šablona třídy |
template <class T1, class T2> class A<T1*, T2*> {}; |
A<T1*, T2*> Šablona třídy |
V následující tabulce jsou uvedeny příklady dědičnosti v částečné specializace.
Prvek kódu |
Třída Návrhář zobrazení |
---|---|
template <class T, class U> class A {}; template <class TC> class A<T, int> {}; class B : A<int, float> {}; class C : A<int, int> {}; |
A<T, U> Šablona třídy B Třída (body na třídy A) C Třída (body na třídy A) |
V následující tabulce jsou uvedeny příklady částečné specializace funkce šablony.
Prvek kódu |
Třída Návrhář zobrazení |
---|---|
class A { template <class T, class U> void func(T a, U b); template <class T> void func(T a, int b); }; |
A FUNC < T, U > (+ 1 přetížení) |
template <class T1> class A { template <class T2> class B {}; }; template<> template<> class A<type>::B<type> {}; |
A<T1> Šablona třídy B<T2> Šablona třídy (B je obsažena v rámci třídy a podle Vnořené typy) |
template <class T> class C {}; class A : C<int> {}; |
A Třída -> C <int> C<T> Šablona třídy |
V následující tabulce jsou uvedeny příklady dědičnosti šablony.
Prvek kódu |
Třída Návrhář zobrazení |
---|---|
template <class T> class C {}; template<> class C<int> { class B {}; } class A : C<int>::B {}; |
A Třída -> b C<int> Třída (B je obsažena v rámci třídy c pod Vnořené typy) C<T> Šablona třídy |
V následující tabulce jsou uvedeny příklady kanonický specializované třídy připojení.
Prvek kódu |
Třída Návrhář zobrazení |
---|---|
template <class T> class C {}; template<> class C<int> {}; class A : C<int> {}; class D : C<float> {}; |
A Třída -> c <int> C<int> Třída C<T> Šablona třídy D Třída -> c <float> |
class B { template <class T> T min (const T &a, const T &b); }; |
B min <T> |
Viz také
Referenční dokumentace
Koncepty
Práce s kódem jazyka Visual C++ (návrhář tříd)