C++默认构造函数:string params vs string params()

kak*_*ush 2 c++ default-constructor

可能重复:
没有参数的构造函数上没有括号是语言标准吗?

任何人都可以解释为什么这些行不会给我一个错误:

string params;
params+="d";
Run Code Online (Sandbox Code Playgroud)

但这些线条:

string params();
params+="d";
Run Code Online (Sandbox Code Playgroud)

给我这个错误:错误C2659:'+ =':作为左操作数运行

Pio*_*ycz 7

这不是对象:

 string params();
Run Code Online (Sandbox Code Playgroud)

这是函数返回字符串:

 string params();
Run Code Online (Sandbox Code Playgroud)

像这样:

 string params(void);
Run Code Online (Sandbox Code Playgroud)

所以错误现在很明显:函数作为左操作数

这个问题有自己的名字:http://en.wikipedia.org/wiki/Most_vexing_parse