Что означает явное ключевое слово? - PullRequest
2617 голосов
/ 23 сентября 2008

Что означает ключевое слово explicit в C ++?

Ответы [ 11 ]

5 голосов
/ 23 января 2015

Конструкторы добавляют неявное преобразование. Чтобы подавить это неявное преобразование, необходимо объявить конструктор с явным параметром.

В C ++ 11 вы также можете указать «оператор типа ()» с таким ключевым словом http://en.cppreference.com/w/cpp/language/explicit При такой спецификации вы можете использовать оператор в терминах явных преобразований и прямой инициализации объекта.

P.S. При использовании преобразований, определенных BY USER (через конструкторы и оператор преобразования типов), допускается использование только одного уровня неявных преобразований. Но вы можете комбинировать эти преобразования с другими языковыми преобразованиями

  • вверх по интегральным разрядам (char до int, float до double);
  • стандартные преобразования (int в double);
  • конвертировать указатели объектов в базовый класс и в void *;
...