变量名中的大括号

Curly braces in variable names

最近我一直在浏览 facebooks folly 库的一些代码,看到一个名为 like

的变量
HTTPServer* const server_{nullptr};

作为 class 成员。 我以前从未见过这样的东西,想知道是否有任何特殊含义。谷歌搜索只让我在 boost 代码中找到了类似这个的其他示例。

也许有人有解释。

它用作初始化列表。在您的情况下,HTTPServer 指针将设置为 nullptr,但您可以使用大括号,即使是普通类型,例如 intfloat

它的作用是初始化变量里面的值,也就是说下面两种态度是一样的:

int x = 10; 
int x{10};

您还可以用更简单的方式初始化数组:

int x[5] = { 1, 2, 3, 4, 5 };

而不是使用:

x[0] = 1;
x[1] = 2;
x[2] = 3;
x[3] = 4;
x[4] = 5;

如果你愿意,你也可以使用

int x{};

用值 0 初始化 x