在 N 元构造函数上显式?
Posted
技术标签:
【中文标题】在 N 元构造函数上显式?【英文标题】:Explicit on N-ary constructors? 【发布时间】:2012-12-02 21:59:54 【问题描述】:在此演示文稿中: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 中的哪些变化使这个关键字变得有用?
【问题讨论】:
【参考方案1】:在C++11中,如果你有一个类A
的非显式构造函数,它有多个参数(这里我以A::A(std::string, int, std::string)
为例),你可以用大括号初始化来初始化那个类型的参数:
void foo(A a);
foo("the", 3, "parameters");
同样,你可以对返回值做同样的事情:
A bar()
return "the", 3, "parameters";
但是,如果构造函数是explicit
,这些将不会编译。因此,explicit
关键字现在对所有构造函数都很重要,而不仅仅是转换构造函数。
【讨论】:
你能举个例子,禁止大括号初始化是有用的吗?大括号初始化有什么危害? @Ali 在新标准 C++ 委员会公共论坛上有人指出这个问题应该或多或少地回答你的问题:***.com/questions/9157041/…以上是关于在 N 元构造函数上显式?的主要内容,如果未能解决你的问题,请参考以下文章