来自Java
,我习惯这样做:
void setColor(String color) {
this.color = color;
}
但是,我最近切换到C++
,我看到了很多这样的内容:
void setColor(string c) {
color = c;
}
为什么不呢?这不推荐吗?
void setColor(string color) {
this->color = color;
}
答案 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;
}