Originariamente inviato da Promo
se volessi passare un int o float o un dato primitivo in genere a una funzione e vorrei che la funzione lo cambiasse come posso fare? (cioè passato per riferimento anche se i dati primitivi son passati per valore)
L'ho detto prima:

"Gli passi un oggetto di una TuaClasse "mutabile" che contiene una proprietà di tipo XYZ". E XYZ può essere quello che ti pare ...

Originariamente inviato da Promo
Come potrei fare a passare un oggetto a una funzione in modo tale che la funzione non modifichi il suo contenuto?
In generale no, non puoi. Ma la questione è posta male. Nel senso che se invochi un metodo che riceve un oggetto, tu devi "sapere" a) se l'oggetto è "mutabile" e b) se il metodo (supponendo la "mutabilità" dell'oggetto) va a modificare lo "stato" dell'oggetto.

Se un metodo riceve un oggetto mutabile e ne modifica lo stato (sempre o a certe condizioni) e questo tu non lo vuoi allora ..... o cloni l'oggetto e quindi passi al metodo una copia (il metodo non lo "sa" ... modifica la copia ma tanto ... non importa) oppure cambi la implementazione del metodo oppure non usi quel metodo o ne usi un altro. Punto.