C ++中的setter和getter

时间:2015-10-28 16:08:46

标签: 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;
}

2 个答案:

答案 0 :(得分:13)

完全相同的事情。在Java中,如果您已将参数命名为sql = "EXEC dbo.rptContractorBidSummary " & IIf(frmClosedProjectWindow.Value = 1, "1", IIf(frmClosedProjectWindow.Value = 2, "2", "NULL")) Set qdef = CurrentDb.QueryDefs("qryContractorBidSummary") qdef.Connect = "ODBC;DRIVER=SQL Server;SERVER=" & Cconst.SERVER_NAME & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword qdef.sql = sql qdef.ODBCTimeout = 1000 qdef.ReturnsRecords = True Set qdef = Nothing DoCmd.OpenQuery "qryContractorBidSummary" 而不是c,则不会有任何阴影,您可以轻松编写

color

Java中的void setColor(String c) { color = c; } (或者C ++)只需要准确指定您引用的this:成员变量或局部变量。

答案 1 :(得分:1)

不需要使用this,因为本地变量和成员变量之间没有冲突,也没有隐藏任何字段。一般来说,你不希望这个冲突根本没有与构造函数参数相同的变量发生,也不希望发生局部变量(尽管很多书都教会你这一点)。 我发现这更加流畅(即使你没有特定语言的背景,也更易读):

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