|
|
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
такой код компилится нормально: Код: plaintext 1. 2. 3. Решил опробовать операторы приведения: такой код не компилится: Код: plaintext 1. такой работает: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2007, 23:13:26 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
такой код компилится нормально: Код: plaintext 1. 2. 3. Решил опробовать операторы приведения: такой код не компилится: Код: plaintext 1. [/quot] Ну еще бы они эти типы в наследственных связях не замечены Tubrikтакой работает: Код: plaintext 1. вот так правильно reinterpret_cast пребразует все во все как старое приведение static_cast и dynamic_cast только для типов связанных отношением наследования, причем static делает преобразование несмотря ни на что, удобно приводится к предку, а вот к потомку не очень, dynamic используется при приведении к потомку, ежели привести к потомку нельзя возвращает 0 однако у dynamic существенный недостаток - время выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2007, 09:36:39 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
спасибо, понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2007, 09:53:01 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
записи конечно выходят не то, что в простом варианте, длинные и неуклюжие.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2007, 18:29:55 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
Приведение типа вещь нештатная, а посему длинно не значит плохо. Они в коде глаз режут и сразу видно что к чему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2007, 20:30:08 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
blinded Ну еще бы они эти типы в наследственных связях не замечены вот так правильно reinterpret_cast пребразует все во все как старое приведение static_cast и dynamic_cast только для типов связанных отношением наследования, причем static делает преобразование несмотря ни на что, удобно приводится к предку, а вот к потомку не очень, dynamic используется при приведении к потомку, ежели привести к потомку нельзя возвращает 0 однако у dynamic существенный недостаток - время выполнения. АФАИК, это не совсем верно. Старое приведение в раздичных ситуациях может повести себя как любое из 4 современных приведений (тут еще const_cast не упоминали :). static_cast выполняет приведение, основываясь на статической информации о типах. Родственные связи при этом не обязательны. Динамическое приведение основывается на информации о типах времени выполнения и актуально для полиморфных типов. reinterpret_cast заставляет интерпретировать двоичное представление одного типа как двоичное представление другого типа. Поскольку эти представления зависят от платформы, пользоваться этим приведением надо осторожно. В рассматриваемом примере мы хотим проинтерпретировать нассив чисел как массив байт. Собственно, другим образом преобразовывать массивы (не элементы массивов, а сами массивы) не имеет смысла. Поэтому действительно следует использовать reinterpret_cast. И в заключение небольшой пример. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 1 1 -0.214554 1 -0.214554 Как видим, старое приведение ведет себя по-разному. Использование нового синтаксиса позволяет более точно выразить желаемый эффект и предотвратить ошибки. В этом примере, например (каламбур), нельзя выполнить static_cast<double&>(a) и reinterpret_cast<double>(a). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2007, 22:58:36 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
приведение(тип &) - что это означает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2007, 17:09:13 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
& -- ссылка. То есть ты хочешь взять не копию значения, а именно саму переменную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2007, 02:00:20 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
ясно, я не мог понять, зачем ф-ии void doit(double a) передавать ссылку если она не готова ее принять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2007, 11:19:10 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
а еще есть приведение с помощью конструктора например Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2007, 15:04:59 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
blinded Tubrikтакой код компилится нормально: Код: plaintext 1. 2. 3. Решил опробовать операторы приведения: такой код не компилится: Код: plaintext 1. Ну еще бы они эти типы в наследственных связях не замечены Tubrikтакой работает: Код: plaintext 1. вот так правильно reinterpret_cast пребразует все во все как старое приведение static_cast и dynamic_cast только для типов связанных отношением наследования, причем static делает преобразование несмотря ни на что, удобно приводится к предку, а вот к потомку не очень, dynamic используется при приведении к потомку, ежели привести к потомку нельзя возвращает 0 однако у dynamic существенный недостаток - время выполнения. Опять запутался. Не пойму почему, в таком случае, получается такое преобразование: Код: plaintext 1. reinterpret_cast тоже вроде работает, но почему целое приводится к указателю на объект посредством static_cast ?? В то время как Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 13:41:22 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
Tubrikне позволяет этого. Потому что статик каст не знает связи между указателями на разные типы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 14:17:45 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
Потомочу все значения равны, но 0 равнее других. Попробуй тоже самое проделать не с нулем - получишь по лбу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 14:26:57 |
|
||
|
Вопрос по приведению типов
|
|||
|---|---|---|---|
|
#18+
blindedПотомочу все значения равны, но 0 равнее других. Попробуй тоже самое проделать не с нулем - получишь по лбу не знал об этой аксиоме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 14:42:41 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=35020954&tid=2027602]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
203ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 496ms |

| 0 / 0 |
