Adresa přetížených funkcí
Publikováno: duben 2016
Použití názvu funkce bez argumentů vrátí adresu funkce. Příklad:
int Func( int i, int j );
int Func( long l );
...
int (*pFunc) ( int, int ) = Func;
V předchozím příkladu první verzi Func je vybrána, a její adresa je zkopírována do pFunc.
Kompilátor rozhodne, která verze funkce pro výběr podle funkce se seznamem argumentů odpovídající přesně cíli hledání. Argumenty v přetížených deklaracích funkce jsou porovnány s některou z následujících akcí:
Objekt, který je inicializován (jak je znázorněno v předchozím příkladu)
Levé straně příkazu přiřazení
Formální argument pro funkci
Formální argument pro uživatelem definovaný operátor
Návratový typ funkce
Pokud není nalezena žádná přesná shoda, je výraz, který přebírá adresu funkce dvojznačný a je vygenerována chyba.
Všimněte si, že i když nečlenská funkce Func, byl použit v předchozím příkladu jsou použita stejná pravidla při převzetí adresy přetížených členských funkcí.