Явный конструктор в C++
Конструктор с одним параметром позволяет написать
User bad = 5. Компилятор сам делает из числа объект.
Слово explicit перед конструктором это запрещает.
Остается явный вызов User user(5). Запись
User bad = 5 с таким конструктором не компилируется.
Запишем класс:
#include <iostream>
class User {
public:
int age;
explicit User(int age) : age(age) {
}
};
Покажем рабочее создание и строку, которая вызывает ошибку:
int main() {
User user(5);
User bad = 5;
return 0;
}
Сделайте класс Employee с explicit конструктором от int для поля уровня и покажите строку присваивания числа, которая не компилируется.