ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 9) онлайн
Доступ к базовому классу
Знание того, когда для объектов производного класса могут быть использованы методы базового класса, является важной темой в наследовании. Это называется правами доступа. Рассмотрим, как компилятор использует их в примере COUNTEN.
Подстановка конструкторов базового класса
Создадим объект класса CountDn в функции main();
CountDn c1;
Эта строка означает, что c1 будет создан как объект класса CountDn и ини- циализирован нулем. Но в классе CountDn нет конструктора, каким же образом выполняется инициализация? Оказывается, что если мы не определили конст- руктор производного класса, то будет использоваться подходящий конструктор базового класса. В COUNTEN конструктор класса CountDn отсутствует, и компиля- тор использует конструктор класса Counter без аргументов.
Такая гибкость компилятора — использование доступного метода взамен от- сутствующего — обычная ситуация, возникающая при наследовании.
Подстановка методов базового класса
Объект c1 класса CountDn также может использовать методы operator++() и get_ count() из базового класса. Сначала используем увеличение c1:
++c1;
Затем выведем на экран значение счетчика c1: cout << "\n c1 = " << c1.get_count ( );
Вновь компилятор, не найдя этих методов в классе, объектом которого явля- ется c1, использует методы базового класса.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42