![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Наткнулся на такую задачку у Страуструпа:
Найдите пример, когда имеет смысл воспользоваться именем в его собственном инициализаторе. Как я понимаю, должно быть что-то вроде такого:
Но моя башка отказывается производить какие-либо здравые идеи. Что имел в виду Страуструп? -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
? |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Daevaorn, ну это же имена разных сущностей
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
"Найдите пример, когда имеет смысл воспользоваться именем в его собственном инициализаторе."
Раз ни у кого нет здравых замечаний, тогда уже пропишусь я. Подобный пример приведен у Стэнли Б.Липпмана. Daeavaorn прописал только окончание примера. Пример используется для обучения новичков (используется в образовательных целях), чтобы рассмотреть область видимости класса.
Ну, здесь я прикопался к словам автора темы. Специально для экспертов поясню, что это шутка. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Daevaorn, akizelokro, правы, черт возьми. А я тупанул :(
Вопрос закрыт. -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Теперь без шуточек. У Страуструпа написано, что иногда важен порядок инициализации. Возможно ли это объяснение?
Еще я вчера ковырялся над примером, как обойти обязательную инициализацию const члена класса. Пробовал это сделать через union, но посчитал, что анонимное объединение накладывает слишком много дополнительных требований, поэтому попытался выкинуть фортель вида
При определенных условиях (если компилятор не зачищает уже выделенную память из хипа) , это может пройти. И в этом случае какая-то информация (возможно полезная уже содержится даже перед инициализацией обьекта). Но тут мне не хватает знаний и я еще подумаю.. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Не совсем понимаю фразу "возможно ли это объяснение?", но, осмелюсь предположить, что ты просишь объяснить что это значит... Объясняю:
Я считаю, что чем "выкидывать фортеля" лучше подумать как перепроектировать эту сущность так, чтобы фортеля не понадобились. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Нет, с этим примером то как раз все понятно. Правильно задать вопрос я сейчас просто не могу, так что вам придется подождать.
Ну с этим достаточно тоже все просто (в границах проработанных разделов). Но я для себя при подготовке считаю, что должен знать и как "надо" писать код, и как "нужно" и как не надо. В этом мой подход отличается. Это сообщение отредактировал(а) akizelokro - 16.10.2007, 11:15 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
а что, если так:
? Это сообщение отредактировал(а) maxim1000 - 16.10.2007, 13:08 -------------------- qqq |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Гхм... Вродь как имя инжектиться в scope только после declaration-statement... Почему тогда это компилируется? 0_о
Добавлено через 18 секунд (mingw-g++-3.4.2) -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
вообще-то я не пробовал скомпилить, просто пытался придумать ситуацию, когда это теоретически может пригодиться, не обязательно корректную... -------------------- qqq |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
И тем не менее, вопрос, почему это компилируется остаётся открытым
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
||||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 15 Всего: 124 |
Относительно заглавного вопроса темы, помнится, использовал
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |