Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Объектно-ориентированный подход в С |
Автор: anthony 25.9.2007, 15:08 | ||
Задача состоит в анализе возможностей использования объектно-ориентированной методологии в С. Remark. Проект Laurent Deniau во многом ориентирован на другой подход к решению этой проблемы, однако проведение аналогий с ним или точное указание на использованные там механизмы приветствуется. Рассмотрим код С, который демонстрирует динамическое связывание функций. Данный код иллюстрирует использование возможности корректной реализации полиморфизма в С без использования каких либо расширений. Полная реализация находится в прилагаемом архиве. Извиняюсь за небрежности в написании тестовой части, однако, она создана как временный пример. В то время как описание ядра является полным и корректным.
Вопросы
PS. Анализ данного кода требует некоторого знания С и объектно-ориентированной методологии (в частности, определение цели вызова и полиморфизм). |
Автор: Lazin 25.9.2007, 16:42 | ||
Прикольно конечно, но мне кажется не очень эффективно по причине того, что для доступа на уровень иерархии N, нужно использовать N косвенных обращений. То есть если у нас есть класс Shape_Circle производный от Shape, который в свою очередь является производным от Object, то для доступа к методам или свойствам Object получится цепочка shape_circle->super->super_->call(). Мне кажется можно попытаться сделать это по другому:
Это может работать потому что структура Foo состоит из тех - же элементов что и Base, плюс свои данные. Поэтому можно обращаться к Foo через указатель на Base. Каждому методу нужно передавать указатель на объект для которого происходит вызов. |