С++ Использование explicit конструкторов
В С++ определено ключевое слово explicit, которое применяется для обработки специальных ситуаций, когда используются конструкторы определенных типов. Что бы понять назначение спецификатора explicit рассмотрим следующую программу.
#include <iostream>; using namespace std; class myclass { int a; public: myclass(int x) { a = x; } int geta() { return a; } }; int main() { myclass ob(4); cout << ob.geta(); return 0; } |
Здесь конструктор класса myclass принимает один параметр. Обратите внимание на то как объявлен объект ob в функции main(). Значение 4 заданное в круглых скобках после имени ob представляет собой аргумент, который передается параметру х конструктора myclass(), а параметр х в свою очередь используется для инициализации члена а. Именно таким способом мы инициализируем члены класса обычно. Однако существует следующий альтернативный вариант инициализации. Например при выполнении следующей инструкции член а так же получит значение 4.
myclass ob = 4;
Если вам ненужно, чтобы такое неявное преобразование имело место, можно предотвратить его с помощью идентификатора explicit. Данное ключевое слово применяется только к конструкторам.
Понравилась статья? Жми: | Поделиться в соц. сетях |