Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
ВнизУказатель на функцию в Си Найти похожие ветки
← →
Галинка © (2007-11-05 10:55) [0]Интересный ход изобретателей этого языка. Если можно объявить указатель на ф-цию, а указатель можно использовать как поле струкутры, то можно создавать псевдо-классы?
← →
Zeqfreed © (2007-11-05 10:57) [1]> Галинка © (05.11.07 10:55)
Суть классов не в описании функций внутри структуры, а в инкапсуляции, наследовании и полиморфизме.
← →
Галинка © (2007-11-05 11:02) [2]Zeqfreed © (05.11.07 10:57) [1]
это понятно.Поэтому и написала псевдо-классы. точнее такая структура отвечает псевдо-инкапсуляции. Т.е. в одной структуре данных есть данные и методы работы с ними. Наследование тоже возможно. Не возможен только полиморфизм ))
← →
wicked © (2007-11-05 11:04) [3]
> Интересный ход изобретателей этого языка. Если можно объявить
> указатель на ф-цию, а указатель можно использовать как поле
> струкутры, то можно создавать псевдо-классы?
как много нам открытий чудных....
потрудитесь сначала узнать, для чего был создан си, тогда отпадут многие "открытия" по поводу фич языка
← →
DrPass © (2007-11-05 11:07) [4]
> Если можно объявить указатель на ф-цию, а указатель можно
> использовать как поле струкутры, то можно создавать псевдо-
> классы?
Это можно и в Паскале сделать. А смысл?
← →
Галинка © (2007-11-05 11:10) [5]DrPass © (05.11.07 11:07) [4]
а чтоб все в одном флаконе. И не искать по библиотекам и модулям нужные функции.
← →
Anatoly Podgoretsky © (2007-11-05 11:26) [6]> Галинка (05.11.2007 11:02:02) [2]
Шаблоны что ли?
← →
Юрий Зотов © (2007-11-05 11:29) [7]> Галинка © (05.11.07 11:02) [2]
> Не возможен только полиморфизм
Возможен. Надо всего лишь ввести в программу таблицу адресов, ее адрес хранить, как поле псевдо объекта, а "метод" псевдообъекта хранить, как смещение в этой таблице - и уже по этому смещению писать реальный адрес исполняемого кода "метода".
А чему, собственно, удивляться? Объектные языки ведь и родились из необъектных. И никаких "объектов", никаких "инкапсуляции, наследования, полиморфизма" в машинной программе ведь реально не существует, это лишь наши абстракции. А в машине существует реализация этих абстракций, и выполнена эта реализация самыми обыкновенными и совершенно необъектными способами. Которые, естественно, можно повторить на любом необъектном языке (кроме, конечно, игрушечных, типа джавы).
← →
Думкин © (2007-11-05 11:33) [8]может не стоило опережать классы, а основательно узнавать те в которых учились?
← →
vpbar © (2007-11-05 11:35) [9]
> Интересный ход изобретателей этого языка. Если можно объявить
> указатель на ф-цию, а указатель можно использовать как поле
> струкутры, то можно создавать псевдо-классы?
Можно. Где то видел такое с двойной диспетчеризацией. Только по-моему у них это случайно "изобрелось". Да и том же делфи такое тоже можно сделать.
Так в чем новость? Так просто восхищение Си?
ЗЫ А по поводу "изобретений" - так указатели на функции-члены еще похлеще будут. На rsdn статья целая была по этому поводу.
← →
homm © (2007-11-05 11:39) [10]> [5] Галинка © (05.11.07 11:10)
> а чтоб все в одном флаконе. И не искать по библиотекам и
> модулям нужные функции.
NameSpaces?
← →
wendy parkinson (2007-11-05 12:03) [11]Есть один хитрый объектно-ориентированный фреймворк для C, c заимствованиями из CLOS-а
http://cern.ch/laurent.deniau/html/cos-oopsla07-draft.pdf
http://sourceforge.net/projects/cos
Правда утверждается, что он написан на C99, неизвестно, насколько он совместим с предыдущими стандартами.
← →
wicked © (2007-11-05 12:04) [12]> vpbar © (05.11.07 11:35) [9]
> homm © (05.11.07 11:39) [10]
в си нету ни указателей на функции-члены (за неимением самих функций-членов), ни namespaces
си - он попроще :)
← →
vpbar © (2007-11-05 12:07) [13]>>wicked © (05.11.07 12:04) [12]
Конечно. Ведь и классов там тоже нет :) Я С++ имел ввиду.
← →
Однокамушкин (2007-11-05 13:30) [14]
> Галинка © (05.11.07 10:55)
> Интересный ход изобретателей этого языка. Если можно объявить
> указатель на ф-цию, а указатель можно использовать как поле
> струкутры, то можно создавать псевдо-классы?
Не только они так думают... Вирт (разработчик Паскаля, если вдруг кто не знает), в своём последнем языке Оберон так и сделал... Вирт вообще очень не любит ООП, отзывается о нём примерно так: "Они называют тип классом, процедуру методом, переменную объектом и говорят, что это новая концепция программирования" Так что в первой версии Оберона, которую делал Вирт, никаких классов не было, Вирт сказал, что кому нужно, пусть вставляет в рекорды поля процедурных типов... Это только в Обероне-2 и Обероне-3 (aka Component Pascal) появилась возможность вставлять процедуры в рекорды, но эти языки делал уже не Вирт, а его ученики Мёссенбек (Оберон-2) и Гуткнехт (Оберон-3)
← →
Piter © (2007-11-05 14:40) [15]Нда, что тут сказать?
Если все разложить по полочкам, смысл этой темы - на Си можно написать компилятор Си. Гениально, на Си что хочешь можно написать, на нем даже ОС пишут, какие тут компиляторы ;)
Да и вообще, это хороший тон - писать новый компилятор / IDE на предыдыдущей версии, а потом скомпилировать новым ;)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c