Possibile duplicato: Java passa per riferimento? public class myClass{ public static void main(String[] args){ myObject obj = new myObject(“myName”); changeName(obj); System.out.print(obj.getName()); // This prints “anotherName” } public static void changeName(myObject obj){ obj.setName(“anotherName”); } } So che Java passa per valore, ma perché passa obj per riferimento nell’esempio precedente e lo cambia?
Dichiara qualcosa di simile al seguente void foo(int x) { std::cout << "foo(int)" << std::endl; } void foo(const int &x) { std::cout << "foo(const int &)" << std::endl; } ha mai senso? Come potrebbe il chiamante essere in grado di distinguere tra loro? ho provato foo(9); // Compiler complains ambiguous call. int x = 9; […]
In quali circostanze dovrei preferire il riferimento pass-by? Pass-by-value?
Di seguito è riportato uno snippet del libro C Programming Just the FAQs . Non è sbagliato in quanto gli Array non possono mai essere passati per riferimento? VIII.6: Come si può passare una matrice a una funzione in base al valore? Risposta: Un array può essere passato a una funzione in base al valore […]
Sono abituato a fare quanto segue in C : void main() { String zText = “”; fillString(zText); printf(zText); } void fillString(String zText) { zText += “foo”; } E l’output è: foo Tuttavia, in Java, questo non sembra funzionare. Presumo perché l’object String viene copiato anziché passato per riferimento . Pensavo che le stringhe fossero oggetti, […]
Quando apprendi un nuovo linguaggio di programmazione, uno dei possibili ostacoli che potresti incontrare è la domanda se la lingua sia, per impostazione predefinita, pass-by-value o pass-by-reference . Quindi, ecco la mia domanda a tutti voi, nella vostra lingua preferita, come si fa effettivamente? E quali sono le possibili insidie ? La tua lingua preferita […]
Passa l’argomento puntatore, passa per valore in C ++? Dal momento che vedo che qualsiasi modifica al puntatore in quanto tale non viene riflessa al di fuori del metodo. Le modifiche che faccio dereferenziando il puntatore si riflettono però. In tal caso, è accettabile / procedura standard utilizzare il puntatore al puntatore come argomento di […]
Capisco che se passo un parametro ( int , struct , ecc.) Come parametro (senza la parola chiave ref ), una copia di tale variabile viene passata al metodo, ma se uso la parola chiave ref un riferimento a tale la variabile è passata, non una nuova. Ma con i tipi di riferimento, come le […]
Qual è la differenza tra questi 2 codici: Codice A: Foo myFoo; myFoo = createfoo(); dove public Foo createFoo() { Foo foo = new Foo(); return foo; } Vs. Codice B: Foo myFoo; createFoo(myFoo); public void createFoo(Foo foo) { Foo f = new Foo(); foo = f; } Ci sono delle differenze tra questi 2 […]
Ecco una versione semplificata di qualcosa che sto cercando di eseguire: for (var i = 0; i < results.length; i++) { marker = results[i]; google.maps.event.addListener(marker, 'click', function() { change_selection(i); }); } ma sto scoprendo che ogni listener usa il valore di results.length (il valore quando termina il ciclo for). Come posso aggiungere ascoltatori in modo […]