Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Ksan
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
#1

static_cast и явное преобразование типов

25.06.2012, 00:30. Просмотров 1803. Ответов 6
Метки нет (Все метки)

Зачем нужен статик_каст, если можно явно преобразовывать типы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2012, 00:30
Ответы с готовыми решениями:

Явное преобразование типов
class CLSObj { void abc(int d){ ... } ... }; int main() { char *p; ...

Явное преобразование типов
#include<iostream> using namespace std; int main() { double a = 4.6;...

Явное преобразование типов в UST
Задание - реализовать универсальный скалярный тип (аля any/variant из буста). Я...

Явное преобразование типов данных(объясните разницу)!
В чём разница между этим: cout << "float(int_value15) / int_value2 = " <<...

Деления двух чисел используя явное преобразование типов
Помогите кто может подкорректировать данную программу условие следующее...

6
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.06.2012, 00:35 #2
например, чем не мнение!?
http://alenacpp.blogspot.com/2005/08/c.html
0
Ksan
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
25.06.2012, 00:48  [ТС] #3
Старый, оставшийся со времен C, но все еще работающий, лучше не использовать вовсе. Хотя бы потому, что конструкцию вида (Тип) очень сложно обнаружить при чтении кода программы.
Судя по этим словам, человек ленивый. Я бы не стал доверять такому. Он привел 5 вариантов приведения типа, НО (!) первый может заменить все остальные + простой синтаксис и тп. Я так и не понимаю, зачем было изобретать велосипед
0
Evg
Эксперт CАвтор FAQ
19277 / 7134 / 528
Регистрация: 30.03.2009
Сообщений: 19,976
Записей в блоге: 30
25.06.2012, 00:51 #4
Цитата Сообщение от Jupiter Посмотреть сообщение
например, чем не мнение!?
http://alenacpp.blogspot.com/2005/08/c.html
Итого ТС'у можно ответить что-то типа того. Си'шное приведение типов преобразует между любыми типами, если это физически возможно. В Си++ приведение типов разделили на 4 группы и для каждой группы ввели свой как бы оператор преобразования типа. Смысл в этом такой, что делается дополнительная подсказка читающему, а так же делается страховка от собственных ошибок. Возможно, dyamic_cast нельзя выразить через Си'шное приведение типов, т.к. компилятор заранее может и не знать, указатель какого конкретного типа имеется на руках. Т.е. static_cast - это всего лишь некоторая попытка навести порядок и правило хорошего тона, чем необходимость

Добавлено через 1 минуту
Цитата Сообщение от Ksan Посмотреть сообщение
Судя по этим словам, человек ленивый. Я бы не стал доверять такому
Человек может и не ленивый, судя по количеству статей (кстати, это она, а не он). Но в данном случае как автор статьи оказалась не на высоте: приведены различные операторы преобразования, но не объяснено, нафига оно так сделао
1
Ksan
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
25.06.2012, 00:51  [ТС] #5
Evg, для этого существую комментарии. Они говорят, что автор хотел сделать тут или там. + Немного старания и все станет понятно. Неужели кто-то видит смысл учить 4 правила вместо 1?
0
Evg
Эксперт CАвтор FAQ
19277 / 7134 / 528
Регистрация: 30.03.2009
Сообщений: 19,976
Записей в блоге: 30
25.06.2012, 00:56 #6
Цитата Сообщение от Ksan Посмотреть сообщение
Evg, для этого существую комментарии. Они говорят, что автор хотел сделать тут или там
В том-то и дело, что комментарии говорят о том, что афтор хотел сделать, но не о том, что на самом деле афтор сделал. Не говоря уж о том, что комментарии имеют обыкновение протухать

Цитата Сообщение от Ksan Посмотреть сообщение
Неужели кто-то видит смысл учить 4 правила вместо 1?
Действительно. Нахера надо учить операцию умножения, если вместо умножения на 7 можно просто 7 раз сложить число и записать в комментарии. Нахера учиться пинать по мячу левой ногой, если есть правая. Нахера учить локальные переменные, если есть глобальные. Нахера учить Си++, если есть ассемблер. Ну и так далее.
0
Ksan
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
25.06.2012, 01:35  [ТС] #7
Evg, образы не совсем верные. Что одно умножение, что другое. Разницы нету никакой, кроме той, что в си++ умножение "расчлененное", а в си - "цельное". Что удобней - умножить 7 на 7 или (3+2+1) на (3+2+1) ?
0
25.06.2012, 01:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2012, 01:35

Неверный результат при преобразования типов данных static_cast<int>(double)
Доброго времени суток, уважаемые программисты! Перейду сразу к сути проблемы:...

Явное преобразование типа в стиле С
1) назовите направление преобразование ( из какого типа в какой ) 2) назовите...

Можно ли использовать явное приведение типов для данных со спецификатором const?
Например: int n; const int* ukn = &amp;n; int s; int* uks = &amp;s; const_cast&lt;...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru