Программирование на C и C++

Онлайн справочник программиста на C и C++

Явные конструкторы

Ключевое слово explicit используется для создания «неконвертирующих конструкторов» (nonconverting constractors). Например, рассмотрим следующий класс:

class MyClass {
int i;
public:
MyClass(int j) {i = j;}
// ...
};

Объекты этого класса могут быть объявлены следующим образом:

MyClass ob1(1);
MyClass ob2 = 10;

В данном случае инструкция

MyClass ob2 = 10;

автоматически конвертируется в следующую форму:

MyClass ob2(10);

Однако, если объявить конструктор MyClass с ключевым словом explicit, это автоматическое кон­вертирование не будет выполняться. Ниже объявление класса MyClass показано с использовани­ем ключевого слова explicit при объявлении конструктора:

class MyClass {
int i;
public:
explicit MyClass(int j) {i = j;}
// ...
};

Теперь допустимыми являются только конструкции следующего вида:

MyClass ob (110);