2012-04-02 12 views
5

Beachten Sie Folgendes:Standardparameter in C++

int foo(int x , int z = 0); 
int foo(int x, int y , int z = 0); 

Wenn ich diese Funktion wie so nennen:

foo(1 , 2); 

Wie weiß der Compiler, welche zu benutzen?

Antwort

8

Es wird nicht und daher wird dieses Beispiel nicht sauber kompilieren, es wird Ihnen einen Kompilierungsfehler geben.
Es wird Ihnen einen mehrdeutigen Funktionsaufruffehler geben.

Online Sample:

int foo(int x , int z = 0){return 0;} 
int foo(int x, int y , int z = 0){return 10;} 

int main() 
{ 
    foo(1 , 2); 
    return 0; 
} 

Ausgang:

prog.cpp: In function ‘int main()’:
prog.cpp:6: error: call of overloaded ‘foo(int, int)’ is ambiguous
prog.cpp:1: note: candidates are: int foo(int, int)
prog.cpp:2: note: int foo(int, int, int)

5

Es nicht, deshalb erhalten Sie einen Compiler-Fehler.

2

Compiler wird mehrdeutige Funktion Überlastung melden. Da Sie nicht herausfinden können, welche Funktion b aufgerufen wird, tut der Compiler

Verwandte Themen