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

Отличие способов приведения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно исправить шибки в коде http://www.cyberforum.ru/cpp-beginners/thread1107548.html
Задание : в каждом ряде а(n,m) найти самый большой елемент и поменять его местами с соответствующим диагональным елементом. Но програма вот чтото не работает( Помогите исправить ошибки( #include <conio.h> #include <stdio.h> #include <stdlib.h>
C++ Определить, содержится ли заданное слово в тексте Помогите написать программу. Дан файл, содержащий произвольный текст. Ввести с клавиатуры слово. Определить, содержится ли заданное слово в тексте. Вывести слово на экран (Слова могут разделяться только одним пробелом, точкой и пробелом, запятой и пробелом). Текст программы от которого отталкиваться: #include <fstream> #include <iostream> #include <conio.h> #include <vector> using... http://www.cyberforum.ru/cpp-beginners/thread1107539.html
C++ Boost::thread vs std::thread
Доброго времени суток, решил углубить свои знания, и решил почитать про потоки, бустовые и те что в 11 стандарте приняли, с бустом все ясно понятно, а вот стандартные меня ввели в ступор например, (boost) создаем поток (он может быть бесконечным (внутри или вайл бесконечный или какие то блокирующие операции (пусть чтения с синхронного сокета))), у потока можно вызвать метод interrrupt т.е...
C++ Ошибка в строке содержащую мин и макс элемент массива
#include <iostream> #include <clocale> #include <cstdlib> #include <iomanip> int main() { using namespace std; setlocale(LC_ALL, "Russian"); int str, stlb;
C++ Дайте совет http://www.cyberforum.ru/cpp-beginners/thread1107505.html
Всем привет.У меня такая ситуация сложилась. Я с учительницей по информатике изучаю паскаль. Дошли до процедур и функций. Но учительница сказала, что надо переходить на более серьезную среду разработки и ЯП. Тут есть 2 пути: либо Object Pascal или C++. Учительнице больше нравится паскаль, т. к. там "все по полочкам". да и дельфи потом изучить - проблем не будет. А мне больше нравится c++: по...
C++ Зависание програмы и бесконечный while Доброго времени суток! Почему простой: while (true) {} заставляет процесс тупо зависнуть? подробнее

Показать сообщение отдельно
DrOffset
6458 / 3832 / 885
Регистрация: 30.01.2014
Сообщений: 6,627
28.02.2014, 13:15     Отличие способов приведения
Цитата Сообщение от klynxe Посмотреть сообщение
Есть ли отличия между (int) и static_cast<int>?
Отличия будут появляться и пропадать в зависимости от ситуации.
В таком простом случае поведение будет эквивалентно. Одним из достоинств второго способа является простота поиска в коде. Достоинство первого - краткость. Однако в более сложны случаях начинают появляться особенности, которые приведения в стиле Си не позволяют преодолеть, маскируют проблему. Например:
C++
1
2
3
4
5
6
7
8
9
10
void foo(int const * a)
{
    double const * a0 = static_cast<double const *>(a); //нельзя, нужен reinterpret_cast
    double const * a1 = (double const *)a; //можно
    double const * a2 = reinterpret_cast<double const *>(a); //можно, но нельзя без const
 
    int * a3 = static_cast<int *>(a); // нельзя, нужен const_cast
    int * a4 = (int *)a; // можно
    int * a5 = const_cast<int *>(a); // можно
}
Как видно С-style cast плюет на систему типов С++, позволяя обходить ее ограничения (замечу, однако, что иногда оно так и нужно, но ты должен знать что делаешь).
Из-а того, что C-style cast всегда выглядит одинаково, можно замаскировать проблему случайно сняв константность или изменив тип на несовместимый. Последствия этого могут вылезти уже в рантайме, когда будет трудно диагностировать проблему (а ведь его еще и поиском по коду трудно найти).
Вот в таком примере
C++
1
2
3
4
5
template <typename T>
void foo1(T a)
{
    A a1 = (A)a;
}
в зависимости от типов T и A можно получить слабо прогнозируемое поведение. С С++ кастами система типов языка не позволила бы провести многие небезопасные действия, выдав диагностику еще на этапе компиляции.
 
Текущее время: 10:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru