为什么在大括号初始化成员变量后需要另一组括号?

sir*_*lot 3 c++ default-constructor in-class-initialization c++11

我试图使用大括号初始化(感谢Visual Studio 2013实际支持),但出于某种原因,当我在类上执行它时,它需要两组大括号.例如:

class NumberGrabber {
    int number;
public:
    NumberGrabber() : number{ 5 }{}

    int getNumber() { return number; }
};
Run Code Online (Sandbox Code Playgroud)

为什么要我说number { 5 }{}?这对我来说并没有真正的视觉感受.

ava*_*kar 14

前一组大括号是初始化器number,后者是定义构造函数体的复合语句.通过适当的格式化,这可能会变得更加清晰.

NumberGrabber()
    : number{5}
{
}
Run Code Online (Sandbox Code Playgroud)

那更有意义吗?