class base {
int i;
public:
base()
{
i = 10;
cout << "in the constructor" << endl;
}
};
int main()
{
base a;// here is the point of doubt
getch();
}
Run Code Online (Sandbox Code Playgroud)
base a 和之间有什么区别base a()?
在第一种情况下,构造函数被调用但不是在第二种情况下!
Mar*_*k B 16
base a声明一个a类型的变量base并调用它的默认构造函数(假设它不是内置类型).
base a();声明一个a不带参数并返回类型的函数base.
这样做的原因是因为语言基本上指定在这种歧义的情况下,任何可以解析为函数声明的东西都应该被解析.对于更复杂的情况,您可以搜索"C++最令人烦恼的解析".
因此,我实际上更喜欢它new X;,new X();因为它与非新声明一致.