In C# questo è certamente possibile, come questo esempio compilabile può mostrare:Posso avere una funzione/metodo che passa un argomento per riferimento e un sovraccarico che lo passa per valore in C++?
static void Teste(int x) { }
static void Teste(ref int x) { }
static void Teste()
{
int i = 0;
Teste(i);
Teste(ref i);
}
Ma si può fare in C++ (/ CLI) con un costruttore? Vedere l'esempio di seguito:
class Foo
{
Foo(int bar)
{
// initializing "Foo" instance...
}
Foo(int &bar)
{
// initializing "Foo" instance...
}
//...
}
Anche se questa classe si compila con questi costruttori non riesco a vedere come scegliere quando applico uno sono gli altri, vale a dire, la chiamata è ambigua, in quanto non v'è alcuna parola chiave I conoscere a questo scopo come "ref" in C#. L'ho provato in un costruttore, dove il nome deve essere lo stesso della classe (ovviamente posso aggiungere un parametro inutile, ma voglio sapere se posso non farlo).
BTW, ho cercato su Google e ho ottenuto solo cose come "qual è la differenza tra il passaggio per ref e per valore?" ma niente che copre un sovraccarico come questo. E immagino che come soluzione alternativa io possa usare il puntatore, grazie al "prendere l'indirizzo di" (&
); o avere, come detto sopra, un parametro extra inutile. Ma quello che voglio sapere è: posso avere sovraccarichi come questi (per ref/per valore)?
Grazie in anticipo,
Provare a inizializzare i costruttori passando un puntatore a uno e un valore all'altro e vedere ciò che si ottiene – smac89
Questo può essere un duplicato, ma a mia difesa, non effettuo ricerche molto bene; inoltre, il nome dell'altra domanda non è molto accattivante (sebbene il nome di questa sia ancora meno). Inoltre, come sidenote, l'altro mi chiede se ha senso, gli chiedo se è possibile. – JMCF125