2015-10-28 19 views
8

Jadąc z Java, jestem przyzwyczajony do robienia tego:setery i getters w C++

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

Jednak niedawno włączony do C++ i widzę dużo to w zamian:

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

Dlaczego nie to? Czy to nie jest zalecane?

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

Jest mniej pisania. Nie musisz używać 'this' w C++, ale nic nie powstrzyma cię przed używaniem tego. – NathanOliver

+1

@NathanOliver co powiedział. Ale także nie musisz używać 'this', jeśli nie są one takie same. – 3kings

+2

Rozumiem, ja lubię używać tego dla jasności powodów oczywiście. Tak długo nie ma na to kary. – user1529412

Odpowiedz

13

To dokładnie to samo. W Javie jeśli nazwał swój parametr c zamiast color, nie miałby żadnego cieniowania i można łatwo napisać

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

The this w Java (lub C++ dla tej sprawy) jest potrzebne tylko dokładnie określić, które color masz na myśli: zmienną składową lub zmienną lokalną.

1

Nie trzeba używać this, ponieważ nie ma konfliktu między zmienną lokalną a zmienną składową i żadne pola nie są ukryte. Ogólnie rzecz biorąc, nie chcemy, aby konflikt ten w ogóle wystąpił, nie posiadając tej samej zmiennej co parametr konstruktora, a także jako zmienną lokalną (pomimo tego, że wiele książek uczy dokładnie tego). znajdę ten jest znacznie bardziej gładka (a także bardziej czytelny, nawet jeśli nie mają tła z danego języka):

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