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{};
#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{};