调用默认构造函数

Vij*_*jay 19 c++

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()

在第一种情况下,构造函数被调用但不是在第二种情况下!

Bo *_*son 26

第二个是声明一个返回基础对象的函数a().:-)


Mar*_*k B 16

base a声明一个a类型的变量base并调用它的默认构造函数(假设它不是内置类型).

base a();声明一个a不带参数并返回类型的函数base.

这样做的原因是因为语言基本上指定在这种歧义的情况下,任何可以解析为函数声明的东西都应该被解析.对于更复杂的情况,您可以搜索"C++最令人烦恼的解析".

因此,我实际上更喜欢它new X;,new X();因为它与非新声明一致.