Cpp 中的构造函数和变量声明

Constructor and Variable Declaration in Cpp

#include<bits/stdc++.h>
using namespace std;

class A{
    int x;

public:
    A(){
        x=10;
    }

    void show(){
        cout<<x<<endl;
    }
};

main(){

    A a;
    a.show();

}

main() 函数中,当我以上述方式声明变量 a 时,代码工作正常,但如果我们声明变量 A a() 编译器会出错。为什么会这样?我认为参数类型匹配没有问题。有人可以帮忙吗?

因为A a()不是变量声明而是函数原型声明

C++11 及更高版本使用通用初始化程序修复了此问题。您正在声明一个 returns 一个 A 的函数。如果您改用 {} 它将起作用:

A a{};