C++ 中的 Setter 和 getter
Setters and getters in C++
来自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;
}
Java(或 C++)中的 this
只需要准确指定您指的是哪个 color
:成员变量或局部变量。
不需要使用this
,因为局部变量和成员变量没有冲突,也没有隐藏字段。通常,您根本不希望通过不使用相同的变量作为构造函数参数和局部变量来发生这种冲突(尽管有很多书都在教您这一点)。
我发现这更加流畅(并且即使您没有特定语言的背景也更具可读性):
private String localColor;
void setColor(String color) {
localColor = 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;
}
Java(或 C++)中的 this
只需要准确指定您指的是哪个 color
:成员变量或局部变量。
不需要使用this
,因为局部变量和成员变量没有冲突,也没有隐藏字段。通常,您根本不希望通过不使用相同的变量作为构造函数参数和局部变量来发生这种冲突(尽管有很多书都在教您这一点)。
我发现这更加流畅(并且即使您没有特定语言的背景也更具可读性):
private String localColor;
void setColor(String color) {
localColor = color;
}