它给出了错误:
#include <iostream>
using std::cout;
class stud
{
int a = 0; // error??
public:
void display();
};
int main()
{
// ...
}
它给出了错误:
#include <iostream>
using std::cout;
class stud
{
int a = 0; // error??
public:
void display();
};
int main()
{
// ...
}
(原因)
自 C++11 起支持具有默认成员初始值设定项的非静态数据成员。
--
(修复)
如今,许多编译器都支持 C++11。
对于 Visual Studio IDE 用户(如我自己):在项目属性上:C/C++ > 语言 > C++ 语言标准:设置为 C++11 或更高版本。在 Visual Studio 2017 中,基线支持 C++11。
对于 Visual Studio IDE 用户以外的用户,请搜索主题:“如何为您的编译器启用 C++11”。
从 C++11开始可以做到这一点。
通过默认成员初始化程序,它只是包含在成员声明中的大括号或等号初始化程序,如果成员在成员初始化程序列表中省略,则使用该初始化程序。
class S
{
int n = 7;
std::string s{'a', 'b', 'c'};
S() // copy-initializes n, list-initializes s
{ }
};