Ho ricevuto la risposta NO! Perché passare per valore e passare per riferimento sembra identico al chiamante.È possibile sovraccaricare una funzione basandosi solo sul fatto che un parametro sia un valore o un riferimento?
Tuttavia, il codice qui sotto compila destra
class A {
public:
void f(int i) {}
void f(int& i) {}
};
Ma quando cerco di usarlo, non c'è errore di compilazione.
int main() {
A a;
int i = 9;
int& j = i;
a.f(1);
a.f(i);
a.f(j);
return 0;
}
Perché il compilatore non lo disabilita anche senza sapere che verrà utilizzato?
Sarebbe utile se hai mostrato il numero di errore del compilatore e la linea attuale. –
dupe: http://stackoverflow.com/questions/930323/f5-and-int-x-fx-to-call-different-functions –