Ich habe die Antwort NEIN! Weil die Übergabe nach Wert und die Weitergabe nach Referenz identisch mit dem Aufrufer aussieht.Können wir eine Funktion überladen, nur weil ein Parameter ein Wert oder eine Referenz ist?
jedoch unter dem Code kompiliert rechts
class A {
public:
void f(int i) {}
void f(int& i) {}
};
Aber wenn ich versuche, es zu benutzen, gibt es Fehler kompilieren.
int main() {
A a;
int i = 9;
int& j = i;
a.f(1);
a.f(i);
a.f(j);
return 0;
}
Warum deaktiviert der Compiler es nicht, auch ohne zu wissen, dass es verwendet wird?
Es würde helfen, wenn Sie den aktuellen Compiler-Fehler und die Zeilennummer zeigte. –
dupe: http://stackoverflow.com/questions/930323/f5-and-int-x-fx-to-call-different-functions –