Ключевое слово explicit в C++ используется для предотвращения неявных преобразований типов. Оно применяется к конструкторам, чтобы запретить компилятору автоматически преобразовывать типы при инициализации объектов или при передаче аргументов в функции.
Пример использования explicit
Рассмотрим пример, где мы создаем класс с конструктором, который принимает целое число:
#include <iostream> class MyClass { public: explicit MyClass(int value) : value(value) {} int getValue() const { return value; } private: int value; }; int main() { MyClass obj1(10); // Корректная инициализация std::cout << "Value: " << obj1.getValue() << std::endl; // 10 // MyClass obj2 = 20; // Ошибка компиляции: неявное преобразование запрещено MyClass obj3 = MyClass(20); // Явное создание объекта std::cout << "Value: " << obj3.getValue() << std::endl; // 20 return 0; }