Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的setter和getter+;_C++_Getter Setter - Fatal编程技术网

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;
}