Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 Доступ к базовому классу - ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 9) онлайн - Studbook

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В 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, использует методы базового класса.

 

6