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

Виртуальная функция

Cтраница 3


Полиморфизм и виртуальные функции могут прекрасно работать, если все возможные классы известны заранее. Но они также работают, когда в систему добавляются новые типы классов.  [31]

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

33 Иерархия классов, производных от абстрактного базового класса Employee. [33]

Полиморфизм и виртуальные функции безусловно будут работать, когда все возможные классы известны заранее. Но они также успешно работают и тогда, когда постоянно вводятся новые виды классов.  [34]

С помощью виртуальных функций и полиморфизма становится возможным создавать и внедрять системы, которые являются легко расширяемыми. Программы могут быть написаны так, чтобы обрабатывать объекты типов, которых даже еще может быть нет, пока программа находится в стадии разработки.  [35]

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

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

Благодаря механизму виртуальных функций и полиморфизму стало возможным проектировать и реализовывать системы, которые легко расширять. Такие программы могут обрабатывать объекты существующих классов и классов, которых не существует на момент разработки программы. Если эти классы получены на основе известных программе классов, то, поскольку программа обеспечивает механизм обработки объектов базовых классов, она сможет успешно обрабатывать и объекты производных классов. Многие мощные программные продукты построены на этом принципе.  [38]

С помощью виртуальных функций и полиморфизма можно разрабатывать и реализовывать системы, которые являются более расширяемыми. Программы могут быть написаны для обобщенной обработки объектов всех существующих в иерархии классов как объектов базового класса. Если в момент разработки программы отсутствуют какие-либо полезные классы, их можно в дальнейшем добавлять с незначительными изменениями или вообще без изменений общей части программы при условии, что эти новые классы являются частью уже обрабатываемой иерархии. Единственными частями программы, которые необходимо модифицировать, являются части, требующие непосредственного знания конкретного класса, добавляемого в иерархию.  [39]

Указатель на виртуальную функцию v - ptr является элементом выполнения виртуальных функций. Каждый объект в классе, содержащем виртуальные функции, имеет указатель v - ptr, который ссылается на таблицу виртуальных функций для этого класса.  [40]

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

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

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

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

Если класс содержит виртуальные функции, то и деструктор базового класса следует объявлять виртуальным. Это приведет к тому, что деструкторы всех производных классов будут виртуальными, хотя их имена отличаются от имени деструктора базового класса. И теперь, если объект в иерархии разрушается при помощи операции delete, а указатель, ссылающийся на объект, является указателем на базовый класс, вызывается деструктор правильного производного класса.  [45]



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