clang tidy pro 类型成员 init resharper

clang tidy pro type member init resharper

我有一些代码解析 json 像这样:

  QJsonParseError errors;
  auto doc = QJsonDocument::fromJson(myJson.toUtf8(), &errors);

Resharper 的 clang tidy 建议标记 QJsonParseError 错误是 'uninitialized record type'

建议的解决方法是通过 {} 对 C++11 的变量进行零初始化。 resharper 提供的自动修复,放在一些括号中,例如:QJsonParseError errors{};

那实际上是什么 mean/do?

零初始化保证 class/struct 的成员是零初始化的。例如-

struct student
{
    int idNo;
    char name[20];
};

所以,如果 student 的对象是零初始化的,那么可以保证成员变量 idNo, name 值被初始化为零(即 idNo = 0 和 name 数组用零填充)。

在您的例子中,QJsonParseError 成员是零初始化的,而不是在对象初始化期间填充一些随机值。