C++ C+中的setter和getter+;
来自C++ C+中的setter和getter+;,c++,getter-setter,C++,Getter Setter,来自Java,我习惯于这样做: void setColor(String color) { this.color = color; } 然而,我最近切换到了C++,我看到了很多这样的情况: void setColor(string c) { color = c; } 为什么不是这个?不建议这样做吗 void setColor(string color) { this->color = color; } 完全一样。在Java中,如果将参数命名为c而不是color
Java
,我习惯于这样做:
void setColor(String color) {
this.color = color;
}
然而,我最近切换到了C++
,我看到了很多这样的情况:
void setColor(string c) {
color = c;
}
为什么不是这个?不建议这样做吗
void setColor(string color) {
this->color = color;
}
完全一样。在Java中,如果将参数命名为
c
而不是color
,则不会有任何阴影,并且可以轻松编写
void setColor(String c) {
color = c;
}
<> > <代码>此< /Cuff>在java(或C++中)只需要精确地指定你所指的“<代码>颜色< /代码>:成员变量或局部变量。不需要使用<代码> < <代码>,因为本地和成员变量之间没有冲突,没有隐藏字段。通常情况下,您根本不希望这种冲突发生,因为没有相同的变量作为构造函数参数,也没有相同的变量作为局部变量(尽管有很多书教您这一点)。 我发现这更流畅(即使你没有特定语言的背景,也更可读):
打字少了。你不必在C++中使用<代码>这个<代码>,但没有什么能阻止你使用它。但是如果它们不是同一个名字,你也不需要使用
这个
。我明白了,为了清楚起见,我确实喜欢使用这个。只要没有惩罚,就没有<代码>惩罚<代码>,但它不是C++程序员常用的编码风格。通常,参数名通常在C++中与成员名和局部变量不同。@ USE1529 412:可读性有很大的惩罚,而你的同事则会把你的车弄得一团糟,因为他们的代码库太乱了。一般来说,询问编写getter/setter的“正确”语法有点像询问用链锯或斧头切断腿是否更好。最好不要砍掉你的腿(或者写一篇文章)。
private String localColor;
void setColor(String color) {
localColor = color;
}