c++ - 多参数构造函数上的显式关键字?

标签 c++ constructor explicit explicit-constructor

我最近遇到了一些看起来很奇怪的类,它有三个构造函数:

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/

相关文章:

c++ - 显式复制构造函数调用语法

c++ - 抛出未处理的异常 : write access violation. bunnies_array 是 0x5CB3CBA

c++ - clang 教程 "missing file"上的段错误

c++:尝试使用const成员构造类

c++ - 继承构造函数在 C++ 中有多大用处?

spring - 如果删除了组件扫描,@Autowired 将不起作用

c++ - 为什么 const char* 隐式转换为 bool 而不是 std::string?

c++ - IASetIndexBuffer 内存泄漏原因

c++ - C++ 中的类型删除是什么?

c++ - 这是正确的 : virtual method of Derived called before constructing Base object?