可能重复:
没有参数的构造函数上没有括号是语言标准吗?
谁能解释为什么这些行没有给我错误:
string params;
params+="d";
但这些行:
string params();
params+="d";
给我这个错误:错误 C2659: '+=' : 作为左操作数的函数
可能重复:
没有参数的构造函数上没有括号是语言标准吗?
谁能解释为什么这些行没有给我错误:
string params;
params+="d";
但这些行:
string params();
params+="d";
给我这个错误:错误 C2659: '+=' : 作为左操作数的函数
这不是对象:
string params();
这是函数返回字符串:
string params();
像这样:
string params(void);
所以现在的错误很明显:函数作为左操作数
在第一种情况下
string params;
使用默认构造函数创建一个字符串实例。
在第二种情况下
string params();
创建一个指向返回字符串的函数的指针。在该类型上,operator+=(const string&)显然没有定义。
是的,这是该语言的一个有点令人困惑的特性,因为当您使用非默认构造函数时,您真的可以编写例如
string params("d");