2015-10-28 6 views
8

は、私がこれを行うに使用しています:セッターと<code>Java</code>から来るC++でのゲッター

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

はしかし、私は最近C++に切り替え、そして私の代わりにこれの多くを参照してください。

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

なぜこれはどうですか?これはお勧めしませんか?

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

その少ないタイピング。あなたは 'this'をC++で使う必要はありませんが、あなたがそれを使うのを止めるものは何もありません。彼が言ったことは – NathanOliver

+1

@ NathanOliver。しかし、同じ名前でなければ 'this'を使う必要はありません。 – 3kings

+2

私は、明らかに明確にするためにこれを使用したいと思います。長い間、これに対してペナルティはありません。 – user1529412

答えて

13

これはまったく同じことです。 Javaでは、あなたのパラメータc代わりcolorのを命名していた場合、あなたはどんなシャドウイングを持っていないと、あなたは簡単に

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

Javaでthis(またはC++そのことについて)を書くことができるだけでどのcolor正確に指定するために必要とされますメンバー変数またはローカル変数を参照しています。

1

thisは、ローカル変数とメンバ変数の間に矛盾がなく、フィールドが隠されていないため使用する必要はありません。一般的に、このコンフリクトはコンストラクタパラメータと同じ変数を持たず、ローカル変数としても存在しません。 (あなたが特定の言語からのバックグラウンドを持っていない場合でも、また、より読みやすい) 私はこれを見つけるには、はるかにスムーズです:

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