2015-10-28 15 views
8

Venendo da Java, io sono abituato a fare questo:Setter e getter in C++

void setColor(String color) { 
    this.color = color; 
} 

Tuttavia, di recente ho passato a C++, e vedo un sacco di questo, invece:

void setColor(string c) { 
    color = c; 
} 

Perché non questo? Non è raccomandato?

void setColor(string color) { 
    this->color = color; 
} 
+4

Il suo meno di battitura. Non devi usare 'this' in C++ ma non c'è nulla che ti impedisca di usarlo. – NathanOliver

+1

@NathanOliver cosa ha detto. Ma anche tu non devi usare 'this' se non sono lo stesso nome. – 3kings

+2

Vedo, mi piace usare questo per ragioni di chiarezza, ovviamente. Finché non c'è penalità per questo. – user1529412

risposta

13

È la stessa identica cosa. In Java se si fosse chiamato il vostro parametro c invece di color, non avreste alcun ombra e si potrebbe facilmente scrivere

void setColor(String c) { 
    color = c; 
} 

Il this in Java (o C++ per questo) è necessaria solo per specificare esattamente quale color ti riferisci a: la variabile membro o la variabile locale.

1

Non è necessario utilizzare this, poiché non esiste alcun conflitto tra la variabile locale e membro e nessun campo è nascosto. Generalmente non vuoi che questo conflitto si verifichi affatto non avendo la stessa variabile come parametro di costruzione e anche come variabile locale (nonostante così tanti libri ti insegnino esattamente questo). Trovo che questo è molto più liscia (e anche più leggibile, anche se non si dispone di sfondo da particolare linguaggio):

private String localColor; 
void setColor(String color) { 
localColor = color; 
}