Sdílet prostřednictvím


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

Třídy, struktury a spojení

Anonymní typy třídy

Vícenásobná dědičnost

Vícenásobné třídy Base

Koncepty

Práce s kódem jazyka Visual C++ (návrhář tříd)

Další zdroje

Šablony