Обсуждение:Тип самоанализа


Эта страница имеет бессмысленное различие между Reflection и Type Introspection, поскольку она грандиозно определяет то, что правильно указано ниже, это просто RTTI (информация о типе времени выполнения). Возможность манипулировать значениями и метаданными объектов во время выполнения не имеет ничего общего с Reflection (изменение значений, связанных с объектом, — это просто базовое изменение состояния программирования!). Отражение возникло, чтобы разрешить проверку RTTI - особенно на Java - а не модификацию, которая НЕ ЯВЛЯЕТСЯ ПРАКТИКОЙ ПРОГРАММИРОВАНИЯ НА ЛЮБОМ ИЗ ПРЕДПОЛАГАЕМЫХ ЯЗЫКОВ, КОТОРЫЕ БУДЕТ ЦИТАТИРОВАНЫ. Я полностью согласен с приведенными ниже мнениями о том, что НЕТ НЕОБХОДИМОСТИ в этой отдельной, плохо сформулированной странице. Reflection, Type Introspection и RTTI должны быть на одной странице.

Перенаправление с Introspection_(computer_science) на эту страницу кажется неуместным — самоанализ охватывает гораздо больше, чем самоанализ типа (как насчет состояния, например?).— Предыдущий неподписанный комментарий добавлен 196.211.47.146 ( обсуждениевклад ) 09:38, 12 июля 2006 г.

Эта страница кажется нестандартным термином для отражения . Эта страница, вероятно, должна упомянуть этот факт и / или быть возвращена к заглушке, которая перенаправляет на эту страницу. — Предыдущий неподписанный комментарий добавлен BenLTitzer ( обсуждениевклад ) 07:29, 4 февраля 2007 г.

Действительно, отношение к отражению кажется достойным комментария, если только эти две статьи не следует просто объединить. Я не настолько теоретик, чтобы знать правильный ответ. Джордан Браун ( обсуждение ) 00:07, 13 марта 2009 г. (UTC) [ ответ ]

Пример C++ действительно не должен использовать код из библиотеки boost. Это сделает для более простого примера. Тёдзюн ( разговор ) 19:50, 18 июля 2008 г. (UTC) [ ответ ]

Пример dynamic_cast немного вводит в заблуждение, когда применяется в связи с полиморфизмом. Использование if() с dynamic_cast не может отличить указатель на базовый или производный класс:
Child c;
Родитель *p = &c;
Оба следующих вопроса вернут «истину»:
if( Child * b = dynamic_cast< Child *>( p))
и
if( Parent * f = dynamic_cast< Parent *>( p))
Использование typeid более надежно, оба следующих утверждения вернуть 'true':
if( typeid( p) == typeid( Parent *))
if( typeid( *p) == typeid( Child))
а они возвращают 'false':
if( typeid( p) == typeid( Ребенок *))
if( typeid( *p) == typeid( Parent))
Renedominik ( talk) 17:13, 6 декабря 2011 (UTC) [ ответить ]