16

我和我的小伙伴最近一直在阅读 leveldb 源代码。我们遇到了这个问题。在 leveldb db/skiplist.h文件中,有一个构造函数声明:

explicit SkipList(Comparator cmp, Arena* arena);

我知道带有单个参数的显式构造函数意味着构造函数参数没有隐式类型转换。但是带有显式关键字的双参数构造函数是什么意思?它是 C++11 的新规则吗?

谢谢。

4

1 回答 1

16

使用 C++11,您可以使用花括号初始化列表来代替其他一些表达式,这会有所不同。例如,您可以在 return 语句中使用它们:

SkipList foo() {
    return {{}, nullptr}; //does not compile with explicit constructor
    return SkipList{{}, nullptr}; //compiles with or without explicit constructor
}
于 2013-07-15T07:01:54.277 回答