Členy třídy
Třídy mohou mít tyto druhy členů:
Třídy, které obsahují třídy, struktury a sjednocení. (Další informace naleznete v tématech Deklarace vnořených tříd a Sjednocení.)
-
[!POZNÁMKA]
Přátelé jsou zahrnuti v předchozím seznamu, protože jsou obsaženi v deklaraci třídy.Nejsou však skutečnými členy třídy, protože nejsou v rozsahu třídy.
Poznámky
Seznam členů třídy může být rozdělen do částí private, protected a public pomocí klíčových slov, které jsou známé jako specifikátory přístupu. Specifikátor přístupu musí následovat dvojtečka :. Tyto části nemusí být souvislé, to znamená, že některé z těchto klíčových slov se mohou v seznamu členů objevit několikrát. Klíčové slovo určuje přístup všech členů, dokud se neobjeví další specifikátor přístupu nebo uzavírací složená závorka.
Deklarace členů v seznamu členů jsou odděleny středníky ;. Další informace naleznete v tématu Syntaxe deklarace člena třídy.
Účelem seznamu členů je:
Deklarovat kompletní sadu členů pro danou třídu.
Určit přístup (veřejný, soukromý nebo chráněný) spojený s různými členy třídy.
V deklaraci seznamu členů lze deklarovat členy pouze jednou. Redeklarace členů vyvolá chybovou zprávu.Protože je seznam členů úplnou sadou členů, nelze přidat členy dané třídy v následujících deklaracích třídy.
Deklarátory členů nemohou obsahovat inicializátory.Zadání inicializátoru vyvolá chybovou zprávu, jak je ukázáno v následujícím kódu:
// class_members1.cpp
// C2864 expected
class CantInit
{
public:
long l = 7; // Error: attempt to initialize
// class member.
static int i = 9; // Error: must be defined and initialized
// outside of class declaration.
};
int main()
{
}
Vzhledem k tomu, že je vytvořena samostatná instance nestatických datových členů pro každý objekt daného typu třídy, je správný způsob inicializace datových členů pomocí konstruktoru třídy. (Další informace o konstruktorech naleznete v tématu Konstruktory.)
Existuje pouze jedna kopie sdílených statických datových členů pro všechny objekty typu dané třídy.Statické datové členy musí být definovány a mohou být inicializovány v rozsahu souboru. (Další informace o statických datových členech naleznete v tématu Statické datové členy.) Následující příklad ukazuje, jak provést tyto inicializace:
// class_members2.cpp
class CanInit
{
public:
CanInit() { l = 7; } // Initializes l when new objects of type
// CanInit are created.
long l;
static int i;
static int j;
};
// i is defined at file scope and initialized to 15.
// The initializer is evaluated in the scope of CanInit.
int CanInit::i = 15;
// The right side of the initializer is in the scope
// of the object being initialized
int CanInit::j = i;
int main()
{
}
[!POZNÁMKA]
Název třídy, CanInit, musí předcházet identifikátor i, čímž určíte, že definovaný identifikátor i je členem třídy CanInit.
Specifické pro produkty společnosti Microsoft
Jazyk C++ společnosti Microsoft umožňuje inicializovat statické, konstantní celé čísla a konstantní datové členy výčtu v definici třídy.Další informace naleznete v tématu Rozšíření jazyků C a C++ společnosti Microsoft.