![]() |
|
Модераторы: bsa Страницы: (9) Все « Первая ... 4 5 [6] 7 8 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]()
|
|
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
обратно же все сводится к
!!!! -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
в данном контексте кода ИМХО трудно говорить о ссылке как о просто еще одном названии переменной ) |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Разница ссылки и простого адреса объекта в том, что компилятор двояко рассматривает операции с ссылкой. В одной ситуации он работает с ссылкой также как и с объектом на которую она ссылается, в другой ситуации ссылка превращается всего-лишь в адрес. Все зависит от того как её используют. Видимо именно это подразумевают ораторы, которые говорят об абстрактности ссылки.
Интересный "хак" на самом деле. Правда на уровне ассемблера ссылка все-равно превратиться в указатель... Можно использовать как вопрос на собеседовании, чтобы завалить тестируемого Кстати где было бы удобно использовать подобное ? По сути можно насильно любому участку памяти присвоить тип без всякого приведения и "кастинга", без проверки типа и возможно для доступа к защищенным данным класса, если удастся вычислить их адрес. Это сообщение отредактировал(а) SABROG - 24.12.2008, 23:30 |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Хороашая идея и звучное название! Надо будет обдумать предложение Компилятор всегда одинаково с ней работает.. Это со стороны программиста выглядит по разному, в зависимости с какой колокольни он смотрит.
Если рассматривать код, опираясь на результат (машинный код), то ссылка выглядит как призрак.. Хотя со стороны языка ничего призрачного в ней нет. Хак ??? Не больший, чем вместо ссылки использовать указатель - а это нормальное явление.
Ну откуда берутся то указатели в асме ?! Интересно, где в примере Вы увидели обход проверки типов ?? Это сообщение отредактировал(а) mes - 25.12.2008, 01:33 |
||||||
|
|||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Предположительно так. Добавляем в класс union, который содержит указатель на int и второй указатель на любой тип данных. В указатель на int помещаем содержимое ссылки i. Пользуем указатель на наш тип данных. Хотя, по идее, такое должно прокатить и с обычными указателями... Это сообщение отредактировал(а) SABROG - 25.12.2008, 02:08 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Почитав стандарт, понял, что это нормальное поведение. Был не прав.
|
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
+1 я там где-то уже писАл, но никто не прислушался повторяю есчо раз ССЫЛКА - ЭТО АЛИАС ИМЕНИ ОБЪЕКТА!!! и ничего более. Именно по этому передачу по ссылке в паскале иногда называют передачей по имени Это сообщение отредактировал(а) J0ker - 26.12.2008, 01:57 |
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 5 Всего: 32 |
Не имени, а объекта или функции. Не каждому объекту можно поставить в соответствие переменную, которая его обозначает. Например, здесь
ref ссылается на временный объект типа const int со значением 1. Время жизни этого временного объекта то же, что и у данной ссылки. Адрес присущ любому объекту, но объект - это не адрес, переменная - это тоже не адрес, ссылка - это тоже не адрес, и указатель - это тоже не адрес. Адрес - это значение, идентифицирующее объект или функцию, а указатель - это объект, который предназначен для хранения адреса. Что касается ссылок, то они объектами не являются. Ссылка - это... это... это... Это сообщение отредактировал(а) UnrealMan - 25.12.2008, 21:57 |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
исправил
|
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
UnrealMan, а в данном случае ?
|
||||
|
|||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 2 Всего: 207 |
с т. з так называемого стандарта возможно однако на самом деле...рассмотрим пракический пример
c т. з функции b ссылка как раз вполне материальный объект размером 4 байта Добавлено через 4 минуты и 47 секунд и все-таки, господа UnrealMan и J0ker еще раз перечитайте название топа -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
метод с точки зрения си просто функция.. a заинлайненый -это просто кусок кода, но с точки зрения асма.. а с точки зрения cpp как был методом так и остался.. кстати на многих функциональных языках нет переменных.. но "на самом то деле" (если копнуть полученный объектный код ) есть.. поэтому спорить не установив общую "точку отсчета" бессмыслено Это сообщение отредактировал(а) mes - 26.12.2008, 03:43 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 2 Всего: 207 |
mes,
к чему это? я же специально оговорил, что с т. з теории ссылка - это одно, однако на практике, т. е с т. з физического смысла, ссылка - это другое -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Ну так вот. Если говорить об указателях, то не во всех указателях содержится адрес памяти. В указателях на метод класса так вообще может находится число из которого определяется какому объекту принадлежит указатель и смещение в VMT. В общем как компилятор захочет так и будет, физического смысла нет, если только тот смысл под который заточен компилятор. Завтра стандарт C++ может изменится и ссылки могут стать возможны и на методы. И будут содержать вообще не адрес, а что-то понятное только компилятору и в зависимости от ситуации он будет вертеть ей как вздумается. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |