Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
谁能解释为什么非单参数构造函数标记为显式编译?据我了解,这在这里绝对是无用的关键字,那么为什么编译时不会出错?
class X { public: explicit X(int a, int b) { /* ... */} };
在 C++03 中,在这种特殊情况下,将两个参数的构造函数标记为 是没有意义的explicit。但这在这里可能有意义:
explicit
explicit X(int i, int j=42);
因此,标记两个参数的构造函数explicit不一定是错误。
在 C++11 中,显式的这种使用会阻止你这样做:
X x = {1,2};
不完全正确。
在 C++11 中,可以使用大括号初始化隐式转换具有多个参数的构造函数。