2015-10-28 14 views
8

C++ getters, bunu yapmaya alışkınımSetters ve <code>Java</code> geliyor

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

Neden bu değil? Bu tavsiye edilmiyor mu?

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

Onun daha az yazı. Bunu C++ 'da kullanmak zorunda değilsiniz, ancak bunu kullanmanızın sizi durduran hiçbir şey yoktur. – NathanOliver

+1

@NathanOliver ne dedi. Aynı zamanda, eğer aynı isim değilse, 'bunu 'kullanmanız gerekmez. – 3kings

+2

Görüyorum ki, açıklık açısından bunu açıkça kullanmak isterim. Bunun için ceza yoktur. – user1529412

cevap

13

Tam olarak aynı şey. Java'da Eğer parametre c yerine color adlandırılmış olsaydı, herhangi bir gölgeleme olmazdı ve kolayca

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

Java this (veya C++ bu konuda) yazabilirsiniz sadece hangi color tam belirtmek için gereklidir Üye değişkenini veya yerel değişkeni belirtiyorsunuz.

1

Yerel ve üye değişkeni arasında çakışma olmadığından ve hiçbir alan gizlenmediğinden, this kullanılmasına gerek yoktur. Genel olarak, bu çatışmanın, bir yapıcı parametresiyle aynı değişkene sahip olmamanız ve yerel değişken olarak (pek çok kitaba rağmen size tam olarak öğretmesine rağmen) gerçekleşmesini istemezsiniz. (Belirli dilden altyapıya sahip olmasa bile ve ayrıca daha okunabilir) Bunu bulmak çok daha pürüzsüz:

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