为什么将新对象声明为b()不能正常工作?

时间:2019-04-24 13:22:06

标签: c++ constructor

我最近了解了构造函数,并且有一个问题。

#include <cstdio>
using namespace std;

class A {
    public:
        A(int i=0){ x=i; }
        void print(){ cout << x << endl; }
    private:
        int x;
}

int main() {
    A a;
    A b();
    A c(1);
    a.print();
    b.print();
    c.print();
}

我了解a.print()如何打印0和c.print()如何打印1,但是我不确定b.print()为什么会调用错误。该错误显示“表达式必须具有类类型”。

当我这样声明b时,这是否意味着创建不带参数的对象?是否因为b()只是A类的默认构造函数?我实际上检查了b的类型,结果是A(),而不是A。什么是A()?为什么b具有A()类型?

我想知道到底发生了什么。有人可以帮忙吗?

0 个答案:

没有答案