C++/specifiers/explicit

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

explicit (explicit specifier; трансл. явный) — спецификатор конструкторов, что запрещает преобразование аргумента к конструктору.

Спецификатор конструкторов запрещает явное присваивание значений объекту класса при его создании.

Типичное создание объекта на стеке, а не в куче, т.е. без указателя, выглядит так:

CSome obj(7);
CSome obj = 7;

Эти 2 разные записи равнозначны: в обоих случаях вызывается конструктор класса CSome, принимающий один аргумент типа int. Если же конструктор класса при определении будет обозначен explicit, то 2-ой вариант записи будет запрещён т.к. спецификатор конструкторов explicit запрещает преобразование аргумента к конструктору, т.е. запрещает запись такого вида CSome obj = 7;. Запись вида CSome obj = 7; запрещена, если был указан спецификатор explicit.

Это незаконченная статья. Вы можете помочь, исправив и дополнив её.
Шаблон:C plus plus