【问题标题】:Curly braces in variable names [duplicate]变量名中的花括号[重复]
【发布时间】:2020-09-28 15:44:51
【问题描述】:

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

HTTPServer* const server_{nullptr};

作为班级成员。 我以前从未见过这样的东西,想知道是否有什么特殊含义。谷歌搜索只让我在 boost code to 中找到了类似这样的其他示例。

也许有人有解释。

【问题讨论】:

  • 简短的回答是您可以将上述行读为HTTPServer* const server_ = nullptr;
  • 谢谢,不知道那个短版。
  • 不客气!上面的看起来确实有点奇怪。由于指针为const 并初始化为nullptr,因此以后无法将其更改为指向HTTPServer 实例。
  • 有一个构造函数可以用来将它初始化为别的东西。这样才有意义。
  • 如果 HTTPServer 被实例化,这将适用。我看不到这种情况发生在这里。无论HTTPServer 是否有一个接受nullptr 的构造函数,它都会初始化指针。

标签: c++ naming folly


【解决方案1】:

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

它的作用是用里面的value(s)来初始化变量,也就是说下面两种态度的意思是一样的:

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{};

x初始化为0。

【讨论】:

  • 非常感谢!不知道这个短版。 :) 现在很清楚了!
  • 如果这是您想知道的全部内容,请将问题标记为已回答 - 其他人会知道您不再需要该主题的帮助。
  • 我已经这样做了。只需要等待时间限制过去。
猜你喜欢
  • 2014-11-26
  • 1970-01-01
  • 2019-02-16
  • 2017-08-25
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多