Позднее, придя к этой странице, Крис Страттон ответил на сам вопрос, но важно исправить несколько вещей, которые Крис Бекке изложил здесь и которые являются распространенными заблуждениями у людей, не знакомых с C ++:
- C ++ не создает неявный код или данные, только то, что вы запрашиваете.Даже для среднего программиста C ++ не будет никакого дополнительного кода или данных.Я узнал об этом благодаря знанию ассемблера C ++, но просто прочитал книги Скотта Мейерса, и это достаточно хорошо.
- Мало того, что исключения являются необязательными в C ++, весь их код может быть исключен в связывании, в основном, для каждого инструмента, существующего там.На самом деле это делается в приложениях RT.
Это сделано для устранения ошибочных представлений, размещенных здесь.Однако добавим еще:
1) Начинающий программист на С ++ может делать глупости, но начинающий программист на С, пытающийся самостоятельно реализовать полиморфизм и наследование, как это делается снова и снова в ядре, просто не называя его таковым,будет делать намного больше неэффективной бессмысленной чепухи.
2) Сказав это, единственное, что может быть создано в базовом C ++, это виртуальный указатель, ЕСЛИ ВАМ НУЖНО ЭТО И указать "virtual", а затем также программисты на C обычносоздать такой указатель, манипулировать им самостоятельно, добавлять таблицы поиска и получать намного более сложные ошибки из-за этого.Как всегда в C ++, если вы не упомянули «виртуальный», вы даже не получите этот указатель.Наследование и инкапсуляция, конечно, полностью свободны от издержек.
3) C ++ создает такое же количество asm и памяти, что и C, если вы явно не запрашиваете специальные функции, но есть распространенный случай, когдаC ++ более эффективен - при передаче указателей на функции.Если вы используете функторы C ++, вы можете встроить указанную функцию.Это чрезвычайно полезно во встроенных приложениях.
4) Если встроенный RT использует C ++, почему linux нет?Просто из-за мифов, поэтому, пожалуйста, внимательно прочитайте это сообщение и обратитесь к Скотту Мейерсу или, еще лучше, к самому асму.Я нахожусь в RT 20 лет и у меня было такое же неверие в C ++, когда я перешел 14 лет назад, но факты не подтверждают такого недоверия.
TL; DR - очень легко написать как эффективныйи в более общем случае более эффективный код на C ++, исследования, большой промышленный опыт и книги по этому вопросу имеются в большом количестве.