Sdílet prostřednictvím


Pravidla pro deklarování konstruktory

Konstruktor má stejný název jako její třídy.Libovolný počet konstruktory lze deklarovat, s výhradou pravidel přetížené funkce.(Další informace naleznete v tématu Overloading.)

class-name  (  argument-declaration-list  )

Poznámky

argument-declaration-list Může být prázdný.

C++ definuje dva speciální typy z konstruktory, výchozí a kopírovat konstruktory, které jsou popsány v následující tabulce.

Výchozí a kopie konstruktory

Druh a konstrukce

Arguments

Účel

Výchozí konstruktor.

Lze volat bez argumentů

Vytvořit výchozí objekt typu třídy

Kopírovat konstruktor

Můžete přijmout jediný argument odkaz na stejný typ třídy

Kopírování objektů typu třídy

Výchozí konstruktory lze volat bez argumentů.Pokud všechny argumenty mají výchozí nastavení však můžete deklarovat výchozí konstruktor s seznam argumentů.Podobně konstruktory kopii musíte přijmout jediný argument odkaz na stejný typ třídy.Další argumenty lze dodány, za předpokladu, že všechny další argumenty mají výchozí hodnoty.

Pokud nezadáte žádné konstruktory, pokusí se kompilátor vygenerovat výchozí konstruktor.Kopírovat konstruktor nezadáte, kompilátor pokusí vygenerovat.Tyto generovaný kompilátorem konstruktory, jsou považovány za veřejné členské funkce.Zadáte-li kopírovat konstruktor s prvního argumentu, který je objekt a ne odkaz, je generována chyba.

Generovaný kompilátorem výchozí konstruktor nastaví objekt (inicializuje vftables a vbtables, v popsané dříve) a volá výchozí konstruktory pro základní třídy a členy, ale trvá žádné další akce.Pouze v případě, že existují, jsou přístupné a jsou jednoznačné, se nazývají základní třídy a člen konstruktory.

Generovaný kompilátorem Kopírovat konstruktor vytvoří nový objekt a provede memberwise kopie obsahu objektu, který chcete zkopírovat.Existují základní třídu nebo člena konstruktory, se nazývají; jinak je provedena bitové operace kopírování.

Pokud všechny třídy base a člen třídy type mít konstruktory kopie, které přijímají const argument konstruktoru generovaný kompilátorem kopie přijímá jediný argument typu consttypea. Jinak, přijímá generovaný kompilátorem Kopírovat konstruktor jediný argument typu typea.

Můžete inicializovat pomocí konstruktoru const nebo volatile objekt, ale samotný konstruktor nemůže být deklarována jako const nebo volatile.Třída pouze právní úložiště pro konstruktor je vložené; použití jiného modifikátoru třídy úložiště včetně __declspec klíčové slovo, s konstruktor způsobí v kompilátoru chybu.

Stdcall konvence volání se používá statický člen funkcí a globální funkce deklarované s __stdcall klíčové slovo a nepoužívejte Proměnný seznam argumentů.Při použití __stdcall klíčové slovo k nestatickému členu funkci, jako například konstruktoru, použije kompilátor thiscall konvence volání. "

Konstruktory základní třídy odvozené třídy nezdědí.Při vytvoření objektu odvozené třídy typu je vytvořen počínaje součástí základní třídy; pak přesune na odvozené třídy komponenty.Kompilátor používá konstruktoru každé základní třídy, jako je inicializován část celý objekt (s výjimkou případů virtuální odvození popsaným v Inicializace základní třídy).

Viz také

Referenční dokumentace

Konstruktory (C++)