![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
saneea |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: 1 Всего: 0 |
На собеседовании задали вопрос: "Зачем было придумывать приведения в стиле C++, если были приведения в стиле C?". Я знаю, что делает каждый из четырёх cast'ов. Но какую выгоду они дают по сравнению с приведениями в стиле C? (dynamic_cast - исключение, т.к. его аналога в C++ не было). У Страуструпа написано, что "новый стиль более ясно выражает намерения программиста"... неужели только в этом выгода?
|
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
приведение означает обычно, что программист хитрит и код не является "чистым". и находить все места приведения в проекте гораздо легче, делая поиск по словам static_cast и т.д., чем пытаться найти приведения в стиле Си. *** кстати, есть ещё один вид каста: function-style cast
Это сообщение отредактировал(а) zim22 - 23.1.2010, 17:13 |
|||
|
||||
saneea |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: 1 Всего: 0 |
ну вот так я и ответил, но по их (интервьюверов) выражению лица было понятно, что это не главная выгода. |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
погоди, а за дыханием интервьювера ты следил? невербальные признаки нужно отслеживать тщательно. руки скрещены у него были? жевачку он жевал? ![]() *** это я к тому, что врядли он задал тебе этот один единственный вопрос. проблема либо в тебе, либо в интервьювере. полезней для психики будет, если будешь думать, что в интервьювере ![]() |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
saneea, к тому, что сказал zim22, можно добавить, что операторов приведения в стиле С++ целых четыре и каждый имеет своё назначение. Компилятору легче диагностировать ошибки некорректного приведения. По-моему у Мэйерса это было...
Добавлено через 3 минуты и 4 секунды О, нашёл! Ну да, почти процитировал:
Effective C++ Third Edition. Item 27: Minimize casting. -------------------- |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Ага легче диагностировать глупые ошибки. Лучше б эти люди совсем программированием не занимались. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
saneea |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: 1 Всего: 0 |
zim22, чтоб внести ясность, собеседование длилось около 4 с половиной часов. За это время были разные вопросы, разные ответы, и разные реакции на ответы. И когда я говорю "по их (интервьюверов) выражению лица было понятно, что это не главная выгода", то это значит, что я говорю, о конкретном вопросе (в данном случае про приведения). Так что не стоит превращать эту тему в сериал "Lie to me". Добавлено через 4 минуты и 21 секунду
Почитал Майерса. Видать приведения в стиле C++ по большей степени расчитаны на "безболезненную" работу с множественным наследованием. |
||||||
|
|||||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
зря так иронично.. "Слежение за дыханием" позволяет очень часто найти то, что от тебя требуется.
вот пример для одиночного
имхо, суть в том что в С-стиле компилятор сам решает какой из преобразований выбрать, и может делать не то что желательно для программиста. В С++-стиле программист явно (прозрачнее) выражает цели. |
||||
|
|||||
saneea |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 13.7.2005 Репутация: 1 Всего: 0 |
mes, спасибо! Пример убедительный.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |