Сколько не читал битв "C vs C++", почему то противники С++ "заставляют" его использовать в самых "тяжелых" проявлениях - RTTI, виртуальные функции (хотя они не тяжелые).
С++ можно использовать только за более жесткий контроль типов. И все.
Потом понять, что ссылки - это удобно и код становится чище.
Потом начать применять приведение типов static_cast(безопасное) и reinterpret_cast(опасное, на усмотрение программиста) вместо С-ного приведения типа (uint32_t *)var. Представьте, как легко найти в коде места, где вы приводите типы рискованно и которые надо проверить в случае ошибки.
Потом понять, что конструктор - это удобно. И их можно использовать в структурах.
Пространства имен.
Все эти возможности несут нулевой оверхед и делают код удобнее и понятнее.
Цитата(Golikov A. @ Nov 28 2014, 18:04)

чего то я видать безнадежно устарел
Код
for (const Point & point : pointsArray)
вот это что за на?
Это нововведение стандарта С++ за 2011 год - "range-based for".
Отлично описано в
этой статьеЦитата(jcxz @ Nov 28 2014, 18:34)

Вся эта си-плюс-плюсная объектно-инкапсулированная хрень хороша только для тех, кто не заглядывает в файлы листинга компилятора.
А если Вы задумываетесь об оптимальности не исходников (как здесь), а результирующего кода (скорости выполнения и размера), то выбирайте наиболее стандартные конструкции, типа for (int i = 0; i < n; ++i). Оптимизаторы компиляторов на них наиболее "натасканы" и код будет оптимальным.
А не нужно туда заглядывать.
Задач, где нужна оптимальность кода, не так много. Чаще пишется обычный, не критичный ко времени исполнения код, развесистая логика. Тут важнее читабельность исходников. И не только для автора.
Разговоры "я пишу один и мне все понятно" в пользу бедных.
Цитата(jcxz @ Nov 28 2014, 18:34)

Я, после опыта оптимизации по скорости DSP-кода, взял это себе за правило - если хочется чтобы код был наиболее оптимален после компилятора, конструкции в исходнном коде должны быть наиболее простыми.
На входе у меня был вот такой вот весь правильный С++ код, со всеми конструкторами/деструкторами и т.п. и при этом он безбожно тормозил и алгоритм не успевал обработать поток данных. После убиения всей этой плюсовой красоты и полного переписывания на простой си-код, скорость выполнения того-же самого алгоритма увеличилась в несколько сотен раз!
Потому что оптимизатор простой код сумел многократно распараллелить.
Очень хотелось бы поверить. Но слишком много неизвестных - какой был компилятор (сейчас компиляторы совершенствуются), каков Ваш уровень мастерства как С++ программиста, каков уровень как С программиста, в каком конкретно месте была потеря скорости?
Вот пример, который привел Александр, хороший с точки зрения проверки С vs C++, т.к. хорошо переводится на С++.
Сообщение отредактировал Slash - Nov 28 2014, 16:31