Ключевое слово explicit в C++

Ключевое слово 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;
}

66

Leave a Reply

Ваш адрес email не будет опубликован.