![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
будет из за замены префиксного на постфиксный (не помню как слово звучит) оператора вызывается не виртуальная реализация . т.е реализация определенная в классе , в каком она вызвана в конструкторе. using в помощь |
|||
|
||||
| warmonger_ |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.7.2007 Где: г. Киев Репутация: 1 Всего: 3 |
Добавлено через 2 минуты и 55 секунд
будут в том смысле, что второй работать не будет ибо не lvalue i++ Это сообщение отредактировал(а) warmonger_ - 18.11.2008, 00:54 --------------------
Make everything as simple as possible, but not simpler.Albert Einstein |
||||||
|
|||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
я тоже только до такого допер, но и еще, что получается с эксепшеном? Конструктор B бросает исключение, из-за того, что A не был корректно создан, или как? |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Vyacheslav |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Подводим итоги:
1.Этот фрагмент не откомпилится. Потребует, чтобы было lvalue
2. Формально говоря, виртуальные функции при вызове в конструкторе и деструкторе ведут себя аналогично невиртуальным. 3. public: using A::func; 4. программа выведет на консоль сообщение "exception". Несмотря, что function try-block в конструкторе отловит исключение, но перегенерит его при условии, если программист сам не удосужится сгенерить свое новое исключение. В выше приведенном примере выражение
эквивалентно
В нижеприведенном примере идет подмена одного типа исключение на другой. В результата программа выдаст сообщение "constuctor error" . Первоначально сгенеренное в теле конструктора исключение погасится. Вернее - не "погасится", а до кода его регенерации дело просто не дойдет.
-------------------- С уважением, Вячеслав Ермолаев |
||||||||
|
|||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Эквивалентны по поведению На основании того, что в соответствии со стандартом, при достижении конца блока обработчика ( catch (...) {} ) в funtion-try-block конструктора и деструктора перехваченное исключение будет сгенерено( rethrow) заново, то есть фактически будет вызвано throw; (15.3 пункт 16) -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Vyacheslav |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Кстати по исключениям
Результат работы программы?
Добавлено @ 13:30 Чему эквивалентно объявление функции?
Этому
или этому
-------------------- С уважением, Вячеслав Ермолаев |
||||||||
|
|||||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
теоретически termination()(вроде), практически func error, по крайней мере для студии, плевать студия хотела на спецификацию )) |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
По этому я обычно стараюсь при интервью держаться в рамках стандарта -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| warmonger_ |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.7.2007 Где: г. Киев Репутация: 1 Всего: 3 |
а почему студия выводит func error? это как-то объясняется? --------------------
Make everything as simple as possible, but not simpler.Albert Einstein |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
А вот захаянный Builder 6 в этом случае выдает результат в соответствии со стандартом
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
студия игнормрует спецификаторы генерируемых исключений в сигнатуре функций, можно использовать как комментарии |
|||
|
||||
| warmonger_ |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.7.2007 Где: г. Киев Репутация: 1 Всего: 3 |
точно... я раньше и не знал) --------------------
Make everything as simple as possible, but not simpler.Albert Einstein |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |