在本演示文稿中:http: //qtconference.kdab.com/sites/default/files/slides/mutz-dd-speed-up-your-qt-5-programs-using-c++11.pdf
作者建议 N 元构造函数受益于 C++11 版本的explicit
关键字。
如果您有多个构造函数参数,C++11 中的哪些变化使这个关键字变得有用?
在本演示文稿中:http: //qtconference.kdab.com/sites/default/files/slides/mutz-dd-speed-up-your-qt-5-programs-using-c++11.pdf
作者建议 N 元构造函数受益于 C++11 版本的explicit
关键字。
如果您有多个构造函数参数,C++11 中的哪些变化使这个关键字变得有用?
A
在 C++11 中,如果您有一个具有多个参数的类的非显式构造函数(这里我A::A(std::string, int, std::string)
用作示例),您可以使用大括号初始化来初始化该类型的参数:
void foo(A a);
foo({"the", 3, "parameters"});
同样,您可以对返回值执行相同的操作:
A bar() {
return {"the", 3, "parameters"};
}
但是,如果构造函数是 ,则explicit
这些将无法编译。因此,explicit
关键字现在对所有构造函数都很重要,而不仅仅是转换构造函数。