可能重复:
Is no parentheses on a constructor with no arguments a language standard?
任何人都可以解释为什么这些行不会给我一个错误:
string params;
params+="d";
但这些行:
string params();
params+="d";
给我这个错误:错误C2659:'+ =':作为左操作数的函数
答案 0 :(得分:7)
这不是对象:
string params();
这是函数返回字符串:
string params();
像这样:
string params(void);
所以错误现在很明显:函数作为左操作数
答案 1 :(得分:1)
在第一种情况下使用
string params;
使用默认构造函数创建字符串实例。
在第二种情况下
string params();
创建一个指向函数返回字符串的指针。在那种类型上,运算符+ =(const string&)显然没有定义。
是的,这是一种令人困惑的语言特性,因为当你使用非默认构造函数时,你真的可以写一些。
string params("d");