C++ 初始化类主体内的数据成员

C++ 初始化类主体内的数据成员,c++,C++,什么时候应该使用构造函数直接在类/结构体内部初始化数据成员 struct A{ int x; A() : x{3} {} }; struct B{ int x{3}; }; 上述两种方法具有相同的效果。如果值依赖于构造函数参数,则必须使用成员init list。如果单独的构造函数应该使用不同的值初始化成员,也必须使用它。它还必须在C++11之前使用,因为这是引入默认成员初始值设定项的语言版本 否则,选择权在程序员。默认成员初始值设定项有助于避免使用相同常量值进行初始化

什么时候应该使用构造函数直接在类/结构体内部初始化数据成员

struct A{
    int x;
    A() : x{3} {}
};

struct B{
    int x{3};
};

上述两种方法具有相同的效果。

如果值依赖于构造函数参数,则必须使用成员init list。如果单独的构造函数应该使用不同的值初始化成员,也必须使用它。它还必须在C++11之前使用,因为这是引入默认成员初始值设定项的语言版本


否则,选择权在程序员。默认成员初始值设定项有助于避免使用相同常量值进行初始化的构造函数中的重复,并具有更简洁、更简单的语法。

如果值依赖于构造函数参数,则必须使用成员初始化列表。如果单独的构造函数应该使用不同的值初始化成员,也必须使用它。它还必须在C++11之前使用,因为这是引入默认成员初始值设定项的语言版本


否则,选择权在程序员。默认成员初始化器对于避免使用相同的常量值初始化的构造函数中的重复以及具有更简洁和更简单的语法非常有用。

我想指出一个区别

struct B{
    int x{3};
};
上述初始化适用于x未显式初始化的所有构造函数

以下初始化仅适用于默认构造函数。所以,如果您遵循下面的方法,当初始化的值相同时,您可能会得到很多锅炉板代码

struct A{
    int x;
    A() : x{3} {}
};

我想指出一个区别

struct B{
    int x{3};
};
上述初始化适用于x未显式初始化的所有构造函数

以下初始化仅适用于默认构造函数。所以,如果您遵循下面的方法,当初始化的值相同时,您可能会得到很多锅炉板代码

struct A{
    int x;
    A() : x{3} {}
};

如果要使用构造函数参数初始化成员变量,该怎么办?或者,在不同的构造函数中以不同的方式初始化它?如果要使用构造函数参数初始化成员变量,该怎么办?或者,在不同的构造函数中以不同的方式初始化它?