Sdílet prostřednictvím


Názvy a kvalifikované názvy

Názvy použité s binárním operátorem rozlišení rozsahu (::) jsou označovány jako „kvalifikované názvy“. Název zadaný po binárním operátoru rozlišení rozsahu musí být členem třídy uvedené na levé straně operátoru nebo členem její základní třídy.

Názvy zadané po operátoru výběru členů (. nebo –>), musí být členy typu třídy objektu uvedeného na levé straně operátoru nebo členy její základní třídy.Názvy zadané na pravé straně operátoru výběru členů (–>) mohou být také objekty jiného typu třídy, za předpokladu, že levá strana operátoru –> je objekt třídy definující přetížený operátor výběru členů (–>), který je vyhodnocen jako ukazatel na jiný typ třídy. (Toto ustanovení je podrobněji popsáno v tématu Přístup ke členům třídy.)

Kompilátor vyhledá názvy v následujícím pořadí a toho hledání zastaví, když je název nalezen:

  1. Rozsah aktuálního bloku, pokud je název použit uvnitř funkce, v opačném případě globální rozsah.

  2. Směrem ven přes každý nadřazený blok rozsahu včetně rozsahu vnější funkce (obsahující argumenty funkce).

  3. Pokud je název použit uvnitř členské funkce, je název vyhledán v oboru třídy.

  4. Název je vyhledán v základních třídách této třídy.

  5. Je prohledán nadřazený rozsah vnořené třídy (pokud existuje) a její základní třídy.Hledání pokračuje, dokud není prohledán vnější nadřazený rozsah třídy.

  6. Je prohledán globální rozsah.

Avšak toto pořadí hledání lze upravit následujícím způsobem:

  1. Názvy začínající :: vynutí, aby hledání začalo v globálním rozsahu.

  2. Názvy začínající klíčovými slovy class, struct a union vynutí, aby kompilátor prohledával pouze názvy tříd (class), struktur (struct) nebo sjednocení (union).

  3. Názvy na levé straně operátoru rozlišení rozsahu (::) mohou být pouze názvy tříd (class), struktur (struct), oborů názvů (namespace) nebo sjednocení (union).

Pokud název odkazuje na nestatický člen, ale je použit ve statické členské funkci, je vygenerována chybová zpráva.Podobně, pokud se název vztahuje k jakémukoli nestatickému členu v nadřazené třídě, je vygenerována chybová zpráva, protože vnořené třídy nemají ukazatel this na nadřazenou třídu.

Viz také

Referenční dokumentace

Souhrn pravidel rozsahu