Форум программистов, компьютерный форум CyberForum.ru

чем отличаются static_cast от - C++

Восстановить пароль Регистрация
 
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
12.06.2013, 17:55     чем отличаются static_cast от #1
Привет всем!
чем отличаются явное приведения типа
C++
1
long tmp = static_cast<long>(45.6);
от
C++
1
long tmp = long(54.34);
?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
12.06.2013, 17:58     чем отличаются static_cast от #2
static_cast - безопасное приведение типа, поищи блог Алёны С++ - она здорово про приведения типов рассказывает
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
12.06.2013, 18:07     чем отличаются static_cast от #3
http://alenacpp.blogspot.com/2005/08/c.html
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,409
12.06.2013, 18:09     чем отличаются static_cast от #4
Сверху С++ стайл, более безопасная формула и в глаза бросается
Снизу С стайл, в С++ лишь по наследству оставили.
Croessmah
12.06.2013, 18:20
  #5

Не по теме:

Цитата Сообщение от septe-mber Посмотреть сообщение
C++
1
long tmp = long(54.34);
может имелось ввиду
C++
1
long tmp = (long)54.34;

Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
12.06.2013, 18:33     чем отличаются static_cast от #6
Croessmah, никакой разницы
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,409
12.06.2013, 18:39     чем отличаются static_cast от #7
Кудаив, ну это как посмотреть. В данном контексте да, а вообще-то, в одном случае вызов конструктора, а во втором приведение типа.
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
12.06.2013, 18:47     чем отличаются static_cast от #8
MrGluck, для встроенных типов никакой разницы, кроме указателей
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,409
12.06.2013, 18:50     чем отличаются static_cast от #9
Кудаив, и как это противоречит с
Цитата Сообщение от MrGluck Посмотреть сообщение
В данном контексте да, а вообще-то,
?
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
12.06.2013, 18:52     чем отличаются static_cast от #10
MrGluck, нет, никак
BAADF00D
Заблокирован
12.06.2013, 18:54     чем отличаются static_cast от #11
Цитата Сообщение от septe-mber Посмотреть сообщение
чем отличаются явное приведения типа
кастование необходимо для приведения типов - классов. Для встроенных же типов не стоит заморачиваться и можно применить второй вариант.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,409
12.06.2013, 19:14     чем отличаются static_cast от #12
BAADF00D, нет, не стоит. Код должен быть написан в едином стиле и первая конструкция явно бросается в глаза, а вторую можно даже не заметить.

Это мб и дело вкуса, на функциональность программы не повлияет.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
12.06.2013, 19:34     чем отличаются static_cast от #13
septe-mber,
Первый вариант - приведение типа, второй - конструирование переменной. Смысл второго варианта заключается в создании единообразного интерфейса для инициализации как пользовательских, так и встроенных типов, это полезно при использовании списков инициализвации, шаблонов и т.д.

Добавлено через 40 секунд
Цитата Сообщение от MrGluck Посмотреть сообщение
Снизу С стайл, в С++ лишь по наследству оставили.
В C это работать не будет
Убежденный
Системный программист
 Аватар для Убежденный
14191 / 6206 / 985
Регистрация: 02.05.2013
Сообщений: 10,339
Завершенные тесты: 1
12.06.2013, 20:08     чем отличаются static_cast от #14
static_cast хорош тем, что если код меняется (а он меняется, рано или поздно) и типы,
участвующие в приведении, становятся несовместимыми, форсируется ошибка компиляции.
Это дает понять программисту, который вносит изменения в код, что он где-то накосячил.

Приведение в стиле С, напротив, спокойно "поглотит" проблемное место, в результате чего
ошибка всплывет только во время работы программы. Как водится, это произойдет не сразу, а
спустя некоторое время, скорее всего во время важной презентации софта, на глазах заказчика
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 20:14     чем отличаются static_cast от
Еще ссылки по теме:

C++ Чем отличаются эти функции?
Чем отличаются итераторы ::begin и ::cbegin? C++
Шаблоны, чем отличаются два шаблона C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,409
12.06.2013, 20:14     чем отличаются static_cast от #15
rangerx, да я неправильно прочел, думал там
C
1
long tmp = (long)54.34;
Yandex
Объявления
12.06.2013, 20:14     чем отличаются static_cast от
Ответ Создать тему
Опции темы

Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru