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++ виртуальные функции
Отзывы