Sdílet prostřednictvím


Porovnávání argumentů a ukazatel this

Členské funkce tříd jsou zpracovávány jinak v závislosti na tom, zda jsou deklarovány s klíčovým slovem static.Jelikož nestatické funkce mají implicitní argument, který poskytuje ukazatel this, jsou oproti statickým funkcím považovány za funkce mající o jeden argument více. Jinak jsou deklarovány shodně.

Tyto nestatické funkce vyžadují, aby implicitní ukazatel this odpovídal typu objektu, z nějž je funkce volána, nebo v případě přetížených operátorů vyžadují, aby se první argument shodoval s objektem, pro nějž je operátor použit. (Další informace o přetížených operátorech naleznete v tématu Přetížené operátory.)

Na rozdíl od ostatních argumentů v přetížených funkcích nejsou při pokusu o nalezení shody s argumentem ukazatele this zavedeny žádné dočasné objekty a nedochází k pokusům o převody.

Při použití operátoru volby členu – > ke zpřístupní členské funkce má argument ukazatele this typ class-name * const.Jsou-li členy deklarovány s modifikátorem const nebo volatile, jsou tyto typy const class-name* const, resp. volatile class-name * const.

Operátor volby členu . funguje stejným způsobem s výjimkou, že je před název objektu přidán implicitní operátor & (adresa).Následující příklad ukazuje tuto funkci:

// Expression encountered in code
obj.name

// How the compiler treats it
(&obj)->name

Levý operand operátorů –>* a .* (ukazatel na člen) je zpracován stejně jako u operátorů . a –> (volba členu) s ohledem na hledání shody argumentů.

Viz také

Referenční dokumentace

Porovnávání argumentů