explicit С++ запрет неявных преобразования при вызове конструктора

explicit ключевое слово С++ применяемое для запрещения неявных преобразований при вызове конструктора


#include <iostream> // cout
using namespace std;

class Print{
public:
    Print(int i){
        cout << i;
    }
};

void func(Print pr){
    ;
}

int main(){
    func(3); //3 несмотря на то что требуется передать объект Print, будет неявно вызван конструктор
}

Если же в конструкторе будет ключевое слово explicit, то будет выдана ошибка компиляции. Рекомендуется любые конструкторы с одним параметром обозначать как explicit


explicit Print(int i){
     cout << i;
}
2023-10-22



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

Конструктор в C++. Конструктор копирования и оператор присваивания.
delete C++ оператор освобождения памяти и спецификатор ограничения доступа
explicit С++ запрет неявных преобразования при вызове конструктора
friend C++ дружественная функция имеющая доступ к закрытым членам класса
mutable C++ изменение членов константного объекта
new C++ динамическое выделение памяти
private С++, С++ приватные члены класса, С++ закрыты члены класса
protected C++ указание защищенных членов класса
public С++, С++ открытые члены класса
struct С++ структура
this C++ указатель на текущий объект класса
virtual C++ виртуальные функции