2.7 Выводы

Предыдущая  Содержание  Следующая V*D*V

Используя указатель на объект, динамическая компоновка позволяет нам найти зависимую от типа функцию: каждый объект начинается с дескриптора, который содержит указатели на функции, применимые к данному объекту. В частности, дескриптор содержит указатель на конструктор, который инициализирует область памяти, выделенную для объекта, а также указатель на деструктор, который высвобождает ресурсы, принадлежащие объекту, прежде чем он будет удалён.

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

Посредством селекторов и динамической компоновки функция с одним и тем же названием будет выполнять разные действия для разных классов. Такая функция называется полиморфной.

Полиморфные функции весьма полезны. Они обеспечивают уровень концептуальной абстракции: differ() будет сравнивать любые два объекта — нам не нужно помнить, какой именно вид differ() применим в конкретной ситуации. Дешёвым и очень удобным инструментом отладки является полиморфная функция store() для вывода любого объекта в файловый дескриптор.

 

Предыдущая  Содержание  Следующая