Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 11:03   #1
Oleg_SK
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 42
По умолчанию Можно ли в этом С++-коде избавиться от C-шного преобразования типов?

Сабж интересует в следующем коде:
SetClassLong(hWin, GCL_HICON, (LONG)LoadIcon(hInstance, MAKEINTRESOURCE(IDC_ICO1)));

P.S: Учусь писать программы на С++ и WinAPI используя Visual Studio 2010.
Oleg_SK вне форума Ответить с цитированием
Старый 07.06.2010, 11:17   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Oleg_SK
Можно ли в этом С++-коде избавиться от C-шного преобразования типов?
Можно.
Код:
SetClassLong(hWin, GCL_HICON, reinterpret_cast<LONG>(LoadIcon(hInstance, MAKEINTRESOURCE(IDC_ICO1)))); // приведение в стиле С++
netrino вне форума Ответить с цитированием
Старый 07.06.2010, 11:26   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем избавляться то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2010, 11:41   #4
Oleg_SK
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 42
По умолчанию

netrino
Благодарю за помощь!
Stilet
Ну, я вроде бы читал, что не желательно использовать в программе на C++ С-шное преобразование типов... У вас по этому поводу другое мнение?
Oleg_SK вне форума Ответить с цитированием
Старый 07.06.2010, 11:44   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

они почти одинаковы, что на си что на с++. Приведение типов, там просто добавляются или удаляются биты до размера типа.
NiCola999 вне форума Ответить с цитированием
Старый 07.06.2010, 11:45   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

С-шное преобразование в итоге приводится к последовательному перебору всех преобразований в стиле С++ (static_cast, dynamic_cast, const_cast, reinterpret_cast), поэтому его использовать не рекомендуется и желательно явно указывать компилятору требуемое преобразование. По результату работы разницы никакой не будет, но С-шное будет медленнее.
pu4koff вне форума Ответить с цитированием
Старый 07.06.2010, 12:28   #7
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
С-шное преобразование в итоге приводится к последовательному перебору всех преобразований в стиле С++ (static_cast, dynamic_cast, const_cast, reinterpret_cast), поэтому его использовать не рекомендуется и желательно явно указывать компилятору требуемое преобразование. По результату работы разницы никакой не будет, но С-шное будет медленнее.
А разве С-шное приведение умеет dynamic_cast?
И, дабы избежать путаницы, добавлю, что если С-шное и будет медленней, то только во время компиляции, но во время исполнения разницы не будет никакой.

2Oleg_SK, Сам Страуструп мотивировал разделение видов преобразований тем, что программист должен чётко понимать что он делает и к каким последствиям это может привести. А названия такие корявые, чтобы была мотивация проектировать программы так, чтобы приведение использовалось как можно реже
netrino вне форума Ответить с цитированием
Старый 07.06.2010, 12:41   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
У вас по этому поводу другое мнение?
Мое ИМХО (и Нетрино это подтвердил) гласит, что напрягаться будет только компилятор. Ниче с ним не случится, если приведение типов не помешает общей работе программы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2010, 15:32   #9
Oleg_SK
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 42
По умолчанию

OK, благодарю всех за ответы!!!
Oleg_SK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типы данных. Выражения. Преобразования типов. Nelson1992 Помощь студентам 0 15.04.2010 19:21
Помогите избавиться от порно! Тат Безопасность, Шифрование 1 08.07.2009 03:55
Можно ли на Turbo C++ писать в коде на русском языке? bull Общие вопросы C/C++ 3 11.06.2009 16:57
Объясните пожалуйста как можно считать значения в этом файле в вектор, 4 -ую матрицу, 6-ую матрицу ciaonataha Помощь студентам 1 30.03.2009 20:57
Можно ли заполнить Combobox в коде программы?! Anna_new Помощь студентам 6 18.04.2008 11:09