Sdílet prostřednictvím


Syntaxe deklarace člena třídy

Datové a funkční členy třídy jsou obecně deklarovány dle pravidel pro deklarace. Sestávají z následujících částí v tomto pořadí:

  • Specifikátory deklarace. Ve třídách jsou pro datové členy povoleny specifikátory úložiště třídy static a mutable . Pro datové a funkční členy jsou povoleny kvalifikátory cv const a volatile. Pro funkce jsou povoleny specifikátory deklarace friend, static, virtual a inline, ačkoli specifikátor friend označuje funkci, která není členem třídy.

  • Deklarátory bez inicializátorů. Chcete-li zadat čistě virtuální funkci (virtuální funkci bez implementace v dané třídě), je za deklarátorem virtuální funkce použit specifikátor čistoty = 0.

  • Volitelně bitová pole. Informace naleznete v tématu Bitová pole.

NEBO

  • Definice funkcí. Definici funkce lze zahrnout do třídy. Je-li takto definována členská funkce, je automaticky považována za vloženou.

NEBO

Členská data nelze deklarovat jako třídy úložiště auto, extern nebo register.Lze je však deklarovat pro použití třídy úložiště static.

Při deklarace třídy friend v seznamu členů lze vynechat seznam deklarátorů členů.Další informace o přátelích naleznete v tématech specifikátor friend a přátelé.I v případě, že nebyl zaveden název třídy, lze tento název použít v deklaraci friend.Deklarace friend název zavede.V deklaracích členů pro takové třídy však musí být použita rozvinutá syntaxe specifikátoru typu tak, jak ukazuje následující příklad:

// class_member_declaration_syntax.cpp
// compile with: /c
struct HasFriends {
   friend class NotDeclaredYet;
};

V předchozím příkladu se za deklarací třídy nenachází žádný seznam deklarátorů členů.Jelikož deklarace třídy NotDeclaredYet ještě nebyla zpracována, je použit rozvinutý tvar specifikátoru typu: class NotDeclaredYet.Typ, který již byl deklarovaný, lze v deklaraci členu friend zadat pomocí normálního specifikátoru typu:

// class_member_declaration_syntax2.cpp
// compile with: /c
struct AlreadyDeclared {};

struct HasFriends {
   friend AlreadyDeclared;
};

Specifikátor čistoty (znázorněný v předchozím příkladu) určuje, že s deklarovanou virtuální funkcí není dodávána žádná implementace.Specifikátor čistoty tak lze zadat pouze pro virtuální funkce.Vezměme si jako příklad:

// class_member_declaration_syntax3.cpp
// compile with: /c
class StrBase {   // Base class for strings.
public:
   virtual int IsLessThan( StrBase& ) = 0;
   virtual int IsEqualTo( StrBase& ) = 0;
   virtual StrBase& CopyOf( StrBase& ) = 0;
};

Předcházející kód deklaruje abstraktní základní třídu — tedy třídu navrženou pouze pro použití jako základní třída pro konkrétnější třídy.Takové základní třídy mohou vynutit určitý protokol (sadu funkcí) deklarací jedné nebo více virtuálních funkcí jako "čistě" virtuální funkce pomocí deklarátoru čistoty.

Třídy odvozené z třídy StrBase musí pro čistě virtuální funkce poskytnout implementace. V opačném případě jsou i ony považovány za abstraktní základní třídy.

Abstraktní základní třídy nelze použít k deklarací objektů.Například před tím, než bude možné deklarovat objekt typu odvozeného z třídy StrBase, musí být implementovány funkce IsLessThan, IsEqualTo a CopyOf. (Další informace o abstraktních základních třídách naleznete v tématu Abstraktní třídy.)

Viz také

Referenční dokumentace

Členy třídy