什么是C++ 11中的"成员初始化程序"?

xml*_*lmx 13 c++ class member-initialization c++11

我遇到了一个名为"member initializer"的奇怪概念.

这里说:

C++ 11添加了成员​​初始化器,如果构造函数没有初始化成员本身,则表达式将应用于类范围内的成员.

它的定义是什么?

是否有一些例子来说明它的用法?

jua*_*nza 17

它可能指的是类内成员初始值设定项.这允许您在声明时初始化非静态数据成员:

struct Foo
{
  explicit Foo(int i) : i(i) {} // x is initialized to 3.1416
  int i = 42;
  double x = 3.1416;
};
Run Code Online (Sandbox Code Playgroud)

更多关于Bjarne Stroustrup的C++ 11常见问题解答.


Dan*_*rey 6

您现在可以在类中添加为构造函数共享的初始值设定项:

class A
{
   int i = 42;
   int j = 1764;

public:
   A() {} // i will be 42, j will be 1764
   A( int i ) : i(i) {} // j will be 1764
};
Run Code Online (Sandbox Code Playgroud)

它避免了必须在构造函数中重复初始化器,对于大型类,它可以是真正的胜利.