我最近了解了构造函数,并且有一个问题。
#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()类型?
我想知道到底发生了什么。有人可以帮忙吗?