为什么我们不能在C++中初始化类的成员变量

Why we cannot initialize the member variable of a class in C++

本文关键字:成员 变量 初始化 我们 不能 C++ 为什么      更新时间:2023-10-16

它给出了错误:

#include <iostream>
using std::cout;
class stud
{
int a = 0; // error??
public:
void display();
};
int main()
{
// ...
}

从 C++11 开始可以这样做。

通过默认成员初始值设定项

,它只是成员声明中包含的大括号或等于初始值设定项,如果在成员初始值设定项列表中省略了该成员,则使用该初始值设定项。

class S
{
int n = 7;
std::string s{'a', 'b', 'c'};
S() // copy-initializes n, list-initializes s
{ }
};

(原因(

自 C++11 起,支持具有默认成员初始值设定项的非静态数据成员。

--

(修复(

如今,许多编译器都支持 C++11。

对于Visual Studio IDE用户(如我自己(:在项目属性上:C/C++>语言> C++语言标准:设置为C++11或更高版本。在 Visual Studio 2017 中,基线支持 C++11。

对于 Visual Studio IDE 以外的用户,请搜索主题:"如何为编译器启用 C++11"。