代码之家  ›  专栏  ›  技术社区  ›  LiraNuna

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

  •  33
  • LiraNuna  · 技术社区  · 17 年前

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

    class Class
    {
        public:
            explicit Class(int );
    
            Class(AnotherClass );
    
            explicit Class(YetAnotherClass, AnotherClass );
    
        // ...
    }
    

    这对我来说真的没有意义-我认为显式关键字是为了保护编译器选择的构造不受外来类型的影响。

    允许这样做吗?如果是,那是什么意思?

    1 回复  |  直到 17 年前
        1
  •  53
  •   NuPagadi    10 年前

    在C++11中,多参数构造函数可以通过大括号初始化隐式转换为。

    但是,在C++11之前 explicit had no effect .