C++ 使用 {} 而不是 () 进行函数调用

C++ using {} instead of () for function call

在 C++ 中,我看到了一个带有此签名的函数的功能库

DocumentReference::DocumentReference(model::ResourcePath path, std::shared_ptr<Firestore> firestore)
    : firestore_{std::move(firestore)} {
    // code here removed for https://whosebug.com/
}

但是库使用 {} 而不是 () 调用函数。

return DocumentReference{
    ResourcePath::FromString(document_path),
    shared_from_this()
};

{} 而不是 () 调用函数有什么区别?

What difference does calling a function with {} instead of () make?

在这种情况下没有区别。两者都只是初始化 DocumentReference 对象。

不过最好使用 {}

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es23-prefer-the--initializer-syntax

这不是“调用函数”。 DocumentReference::DocumentReference 是构造函数。构造对象的方法有很多种,{} 就是其中之一。参见

  • Calling constructor with braces
  • Why is list initialization (using curly braces) better than the alternatives?