| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > reflection (отображение) |
| Автор: null56 12.3.2010, 15:33 |
| Всем привет Наткнулся на интересную статью в википедии и заинтересовался загадочным для меня словом reflection http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29 Как я понял по контексту статьи, это изменение собственного кода самим приложением? или я ошибаюсь Хотел бы задать вопрос: 1) что же это действительно такое? 2) где - нибудь применяется ли? 3) примерчики элементарные не могли бы скинуть? заранее благодарен за помощь |
| Автор: Леопольд 12.3.2010, 15:41 |
| Думаю, можно заявить, что в С++ нет интроспекции. Если, конечно, не считать за таковую RTTI. |
| Автор: chaos 12.3.2010, 15:49 |
| null56, как правило подобное есть в языках работающих под VM например Java & C# для ++ никогда подобного не слышал, хотя нет ничего невозможного. только тут asm надо подключать |
| Автор: null56 12.3.2010, 15:54 | ||
chaos, ну про скриптовые понятно, а вот цитата из вики
Добавлено через 5 минут ... я это к тому, а какие возможности в чистом си? |
| Автор: chaos 12.3.2010, 16:00 | ||||||
Java тоже понятно. Периодически там пользую reflection. а вот про С ничего не могу скзать. Хотя.....хотя нечто похожее(имхо) есть в Qt. Смотреть классы
|
| Автор: GoldFinch 12.3.2010, 16:11 |
| в С++ это например boost.fusion вырожденный случай - это использование map<string,any> вместо struct, т.е. использование типа данных у которого можно перечислить поля в рантайме Добавлено через 1 минуту и 26 секунд впринципе все можно реализовать на С, но путем невероятного числа строчек кода |
| Автор: mes 12.3.2010, 16:36 |
вот придуманный на скорую руку пример на чистом си http://codepad.org/ePOsLzn8 |
| Автор: chaos 12.3.2010, 16:44 |
| тут еще как мне кажется важно то, что в языках где это используется, тип есть объект |
| Автор: GoldFinch 12.3.2010, 16:51 |
| chaos, а что мешает в С++ тип сделать объектом? наделай объектов "типов" и клонируй их при создании переменных Добавлено через 2 минуты и 48 секунд вобщем на С\С++ можно сделать все, кроме динамической оптимизации но если сделать виртуальную машину, то можно будет сделать динамическую оптимизацию ее кода, хотя неизвестно есть ли в этом смысл %) |
| Автор: mes 12.3.2010, 17:36 |
рефлексия к объектам прямого отношения не имеет, т.е рефлексии абсолютно безразлично ООП это или нет |