явный конструктор не одного параметра

Может кто-нибудь объяснить, почему конструктор не одного параметра помечен как явная компиляция?
Насколько я понимаю, это абсолютно бесполезное ключевое слово, так почему же это компилируется без ошибок?

class X
{
public:
explicit X(int a, int b) { /* ... */}
};

7

Решение

В C ++ 03 и в этом конкретном случае нет смысла отмечать двухпараметрический конструктор explicit, Но это может иметь смысл здесь:

explicit X(int i, int j=42);

Таким образом, отмечая двухпараметрический конструктор explicit Не должно быть ошибки.

В C ++ 11 такое использование явного не позволит вам сделать это:

X x = {1,2};
10

Другие решения

Не совсем верно.

В C ++ 11 конструкторы с несколькими аргументами могут быть неявно преобразованы с помощью инициализации скобки.

7

По вопросам рекламы [email protected]