我最近遇到了一些看起来很奇怪的类,它有三个构造函数:
class Class
{
public:
explicit Class(int );
Class(AnotherClass );
explicit Class(YetAnotherClass, AnotherClass );
// ...
}
这对我来说真的没有意义 - 我认为显式关键字是为了保护编译器选择的构造不受外来类型的影响。
这是允许的吗?如果是,是什么意思?
最佳答案
在 C++11 中,多参数构造函数可以隐式转换为大括号初始化。
但是,在 C++11 之前,explicit
仅适用于单参数构造函数。对于多参数构造函数,它被忽略,had no effect .
关于c++ - 多参数构造函数上的显式关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118680/