В предыдущих примерах производный класс ничего не добавлял к базовому классу. Для производного класса функции определялись только чтобы обеспечить преобразование типа. Каждый производный класс просто задавал альтернативный интерфейс к общему множеству программ. Этот специальный случай важен, но наиболее обычная причина определения новых классов как производных классов в том, что кто-то хочет иметь то, что предоставляет базовый класс, плюс еще чуть-чуть.
Для производного класса можно определить данные и функции дополнительно к тем, которые наследуются из его базового класса. Это дает альтернативную стратегию обеспечить средства связанного списка. Заметьте, когда в тот slist, который определялся выше, помещается элемент, то создается slink, содержащий два указателя. На их создание тратится время, а ведь без одного из указателей можно обойтись, при условии, что нужно только чтобы объект мог находиться в одном списке. Так что указатель next на следующий можно поместить в сам объект, вместо того, чтобы помещать его в отдельный объект slink. Идея состоит в том, чтобы создать класс olink с единственным полем next, и класс olist, который может обрабатывать указателями на такие звенья olink. Тогда olist сможет манипулировать объектами любого класса, производного от olink. Буква "o" в названиях стоит для того, чтобы напоминать вам, что объект может находиться одновременно только в одном списке olist:
struct olink {
olink* next;
};
Класс olist очень напоминает класс slist. Отличие состоит в том, что пользователь класса olist манипулирует объектами класса olink непосредственно:
class olist {
olink* last;
public:
void insert(olink* p);
void append(olink* p);
olink* get();
// ...
};
Мы можем вывести из класса olink класс name:
class name : public olink {
// ...
};
Теперь легко сделать список, который можно использовать без накладных расходов времени на размещение или памяти.
Объекты, помещаемы в olist, теряют свой тип. Это означает, что компилятор знает только то, что они olink"и. Правильный тип можно восстановить с помощью явного преобразования типа объектов, вынутых из olist.
Например:
void f()
{
olist ll;
name nn;
ll.insert(&nn); // тип &nn потерян
name* pn = (name*)ll.get(); // и восстановлен
}
Другой способ: тип можно восстановить, выведя еще один класс из olist для обработки преобразования типа:
class olist : public olist {
// ...
name* get() { return (name*)olist::get(); }
};
Имя name может одновременно находиться только в одном olist. Для имен это может быть и не подходит, но в классах, для которых это подойдет полностью, недостатка нет. Например, класс фигур shape использует для поддержки списка всех фигур именно этот метод. Обратите внимание, что можно было бы определить slist как производный от olist, объединяя таким образом оба понятия. Однако использование базовых и производных классов на таком микроскопическом уровне может очень сильно исказить код.
Другие работы по теме:
Классификация элитного жилья
Классификация элитного жилья. Вся-то и беда в том, что такой классификации, четкой, структурированной и единой, в нашей стране до сих пор не существует. У нас вообще-то и с самим понятие элитное жилье не все определено. И все-таки, как же из этого положения выходят застройщики и риелторы?
Качество вод водохранилищ
Приведена оценка качества воды всех водохранилищ России, включая отклонения ПДК ряда микроэлементов.
Спирты 2
Альтернативное название спиртов – алкоголи, однако, оно вряд ли дает исчерпывающую характеристику всему этому классу веществ, несмотря на то, что этиловый спирт, действительно, входит в состав всех алкогольных напитков.
Ключевые фразы и сила модификаторов
Большинство экспертов по оптимизации поисковых систем соглашается, что процесс выбора ключевой фразы - единственный наиболее важный шаг в кампании оптимизации сайта.
Требования к оформлению а
ОУ, в центре листа размещается название предмета и формулировка темы; чуть ниже фамилия, имя и отчество обучающегося и его принадлежность к классу; фамилия, имя и отчество учителя; внизу по центру указывается название населенного пункта, в котором написан реферат и год его написания
Сочинение-описание по картине В.Д. Поленова Золотая осень
Сочинение-описание по картине В.Д. Поленова "Золотая осень" Автор: Разное В художественной школе нашему классу дали задание: нарисовать осенний пейзаж. В пример преподаватель представил нам иллюстрации нескольких картин. Больше всего меня поразила картина Поленова Василия Дмитриевича «Золотая осень».
Человек, который мне нравится
Автор: Сочинения на свободную тему Учительница проходит мимо, подходит к доске и объявляет тему сочинения: «Человек, который мне нравится». По классу пробегает негромкий гул. Все решают, о ком будут писать. Я думаю, решаю и представляю, о ком же будет моё сочинение. Первое, что пришло на ум, это была идея писать о маме, ведь она самый близкий и родной человек.
Айвазян, Артемий Сергеевич
Введение 1 Биография 2 Дискография Список литературы Введение Артемий (Арутюн) Сергеевич Айвазян (арм. Արտեմի Այվազյան; 26 июня 1902, Баку — 14 ноября 1975, Ереван) — джазовый композитор, дирижёр, виолончелист.
Сломанные оковы гимн
«Zdrobite cătuşe» («Сломанные оковы») — гимн Румынии в 1948-1953 годах. Объявлен гимном сразу же после свержения монархии. Автор текста — Аурел Баранга, автор музыки — Матей Сокор. Новый гимн подчеркивал, насколько большую роль отводил коммунистический режим рабочему классу.
Сергей Васильевич Рахманинов
Доклад по истории на тему: «Сергей Васильевич Рахманинов» подготовил ученик 8 класса «Б» Эрлих Александр Сергей Васильевич Рахманинов Сергей Васильевич Рахманинов
Методика развертывания Windows Compute Cluster Server 2003
Программное обеспечение Windows Compute Cluster Server (WCCS) 2003 позволяет создать экономически эффективное и мощное решение для высокопроизводительных вычислений, которое функционирует на стандартных компьютерах с архитектурой х64.
Динамические структуры данных: дек
Понятие класса как собрания информации, которая включает в себя данные и функции. Создание класса "Дек". Реализация методов: добавления элемента в начало и в конец дека, удаление элемента из начала и конца дека, проверка дека на наличие в нем элементов.
Проектирование и реализация базы данных
Расчет предельно-допустимых сбросов (ПДС) для предприятий различных видов деятельности. Разработка и реализация базы данных "ПДС". Схема данных и программные тексты.
СУБД "Такси города Москва"
СУБД "Такси города Москва" предназначена для быстрого и эффективного поиска такси. Схематическое изображения структуры СУБД "Такси города Москва". Таблицы описания полей. Функциональные части БД: панель администрирования и пользовательский каталог.
Сортировка массива методом Шелла
Отчёт по практике Выполнили: cт.гр. 97ЭЭ3 Толмач М., Ерегин П., Синева Т. Пензенский государственный университет, Кафедра "Экономическая кибернетика"
Динамические структуры данных стеки
Стек — динамическая структура данных, представляющая из себя упорядоченный набор элементов, в которой добавление новых элементов и удаление существующих производится с одного конца, называемого вершиной стека.
Текстовый редактор и его назначение
Text Нельзя набирать в разных строках фамилии и инициалы, к ним относящиеся, а также отделять один инициал от другого. Нельзя набирать в разных строках фамилии и инициалы, к ним относящиеся, а также отделять один инициал от другого. (Сидоров И.П.) Graphics
Организация баз данных 2
ВВЕДЕНИЕ Целью моей курсовой работы является создание базы данных для быстрого поиска нужного препарата. Аптеки находятся в разных городах. Так же возможно наличие в одном городе нескольких аптек. В каждой аптеки существуют различные назначение препаратов, по которым и разбиты все препараты.
Лабораторная работа по Информатике 2
Лабораторная работа. Вариант1. 1. Разработать информационную подсистему "Зарплата" на языке SQL для автоматизации начисления почасовой заработной платы в бухгалтерии. База данных состоит из трех таблиц, содержащих сведения о работниках, ставки почасовой оплаты и табель отработанных часов.
"Безалкогольный" увлажняющий аппарат
Избирательная подача краски только на печатающие элементы формы требует применения в традиционной офсетной плоской печати увлажняющих аппаратов.
Классификация юридических лиц
Параметры сравнения Товарищества Производственные кооперативы Унитарные предприятия Наименование 1. Необходимо добавление к названию: "полное товарищество" и "и компания".
Исследование предохранительных водногелевых ВВ
В статье представлены некоторые этапы исследования предохранительного водонаполненного взрывчатого вещества марки Гелекс, которое относится к IV классу, применяемому для подрывания в шахтах опасных по газу и пыли.
Амебы
Амебы, одноклеточные организмы, характеризующиеся наличием псевдоподий (ложноножек), т.е. постоянно меняющих свою форму выпячиваний цитоплазмы, с помощью которых клетка передвигается и захватывает пищу.
Крокодилы 2
Крокодилы (Crocodylia, или Loricata) — отряд водных позвоночных, относящихся к классу Пресмыкающиеся . Отряд крокодилов включает 3 семейства: крокодиловые, аллигаторовые и гавиаловые.
Oбыкновенная чесночница (Pelobates fuscus)
Oбыкновенная чесночница (Pelobates fuscus) принадлежит к классу земноводных, или амфибий, к отряду бесхвостых земноводных (Anura)и семейству чесночниц (Pelobatidae). Распространена в Европе, от Дании до Турции.
Казаков Ю.П.
Русский советский писатель. Родился 8 июля в Москве в семье рабочего. С детства мечтая стать музыкантом, будущий писатель окончил музыкальное училище им. Гнесиных по классу контрабаса в 1951 и сразу был принят в состав оркестра Музыкального театра.