Чистая виртуальная функция - Большая Энциклопедия Нефти и Газа, статья, страница 3
Если тебе трудно грызть гранит науки - попробуй пососать. Законы Мерфи (еще...)

Чистая виртуальная функция

Cтраница 3


31 Абстрактный базовый класс Employee ( часть 1 из 12. [31]

Открытые функции-элементы включают: конструктор, который принимает в качестве аргументов имя и фамилию; деструктор, который освобождает динамически выделенную память; функцию доступа get, которая возвращает имя; функцию доступа get, которая возвращает фамилию; две чистые виртуальные функции earnings и print. Почему эти функции объявлены чистыми виртуальными. Ответ состоит в том, что не имеет никакого смысла реализовывать эти функции в классе Employee. Мы не можем начислять заработную плату абстрактному служащему: мы должны, сначала определить тип служащего; мы не можем также печатать заработную плату абстрактного служащего. Делая эти функции чистыми виртуальными, мы показываем, что они должны быть реализованы в производных классах, а не в базовом.  [32]

33 Абстрактный базовый класс Employee ( часть 1 из 12. [33]

В открытой секции класса объявляются следующие функции-элементы: конструктор именем и фамилией работника в качестве аргументов; деструктор, который освобождает динамически выделенную память; get - функция, которая возвращает имя сотрудника; get - функция, возвращающая фамилию; и наконец, две чистых виртуальных функции - earnings и print. Почему эти функции - чистые виртуальные. Ответ прост: потому что не имеет смысла определять эти функции в классе Employee. Объявляя эти функции чистыми виртуальными, мы указываем на то, что будем определять эти функции в производных классах, но не в базовом классе. Мы не можем рассчитать доход для служащего вообще - сначала нужно знать категорию этого служащего.  [34]

Во всех других классах, производимых от класса Mammal, теперь нет необходимости замещать общий для всех метод ReproduceO, хотя при желании это можно сделать для определенного класса, как, например, в нашей программе это было сделано в строке 83 для класса Dog. Все остальные чистые виртуальные функции были замещены в классах Fish, Horse и Dog, поэтому для каждого из них можно создавать соответствующие объекты.  [35]

В нашем следующем примере ( рис. 20.2) мы вернемся к иерархии классов: точка, круг, цилиндр - из предыдущей главы, только на этот раз на вершину иерархии поставим абстрактный базовый класс Shape. Shape содержит чистую виртуальную функцию - printShapeName - и, следовательно, является абстрактным базовым классом. В Shape имеются две других виртуальных функции, а именно area и volume, каждая из которых возвращает нулевое значение. Класс Point наследует эти функции от Shape. И в этом есть смысл, потому что и площадь и объем точки равны нулю.  [36]

В абстрактном классе определяется интерфейс всех узлов иерархии классов. Абстрактный класс содержит чистые виртуальные функции, которые будут определятся в производных классах. Благодаря полиморфизму этот интерфейс класса будет доступен всем функциям в иерархии.  [37]

Абстрактный класс определяет интерфейс для разных типов элементов иерархии классов. Абстрактный класс включает чистые виртуальные функции, которые будут определены в производных классах. Все функции в иерархии могут применять один и тот же интерфейс, используя полиморфизм.  [38]

В абстрактном классе определяется интерфейс всех узлов иерархии классов. Абстрактный класс содержит чистые виртуальные функции, которые будут определятся в производных классах. Благодаря полиморфизму этот интерфейс класса будет доступен всем функциям в иерархии.  [39]

Абстрактный класс определяет интерфейс для разных типов элементов иерархии классов. Абстрактный класс включает чистые виртуальные функции, которые будут определены в производных классах. Все функции в иерархии могут применять один и тот же интерфейс, используя полиморфизм.  [40]

В данном примере дополнительная функциональность состоит в выведении на экран простого сообщения. В реальной программе чистая виртуальная функция может содержать достаточно сложный программный код, например создание окна, в котором рисуются все фигуры, выбираемые пользователем.  [41]

Обязательно замещайте в производных классах все чистые виртуальные функции. Объявляйте все функции, которые нужно замещать в производных классах, как 4истые виртуальные функции.  [42]

Виртуальная функция, объявленная с инициализатором 0 вместо тела функции, называется чистой виртуальной функцией. Класс, содержащий хотя бы одну чистую виртуальную функцию, называется абстрактным классом.  [43]

В строках 5 - 14 объявляется класс абстрактного типа данных Shape с тремя ч - чистыми виртуальными функциями. Впрочем, для того чтобы класс стал ADT, достаточно было объявить в нем хотя бы один из методов как чистую виртуальную функцию.  [44]

45 Определение абстрактного базового класса Shape ( часть 1 из 9. [45]



Страницы:      1    2    3    4