На самом деле, c ++ может быть во многих отношениях на быстрее , чем c, благодаря своей способности поддерживать многие конструкции времени перевода, такие как шаблоны выражений. По этой причине матричные библиотеки c ++, как правило, гораздо более оптимизированы, чем c, включают меньше временных, развертываемых циклов и т. Д. С новыми функциями c ++ 0x, такими как шаблоны вариантов, функция printf, например, может быть намного быстрее и безопаснее типов, чем версия реализована в ц. Он даже сможет соблюдать интерфейсы многих конструкций c и оценивать некоторые из их аргументов (например, строковые литералы).
К сожалению, многие люди думают, что c быстрее, чем c ++, потому что многие люди используют ООП, чтобы означать, что все отношения и использование должны происходить через большие иерархии наследования, виртуальную диспетчеризацию и т. Д. Это привело к тому, что некоторые ранние сравнения полностью отличались от того, что считается хорошее использование в эти дни. Если бы вы использовали виртуальную диспетчеризацию там, где это уместно (например, как файловые системы в ядре, где они создают виртуальные таблицы через указатели функций и часто в основном собирают c ++ в c), у вас не будет пессимизации от c и со всеми новыми функциями. , может быть значительно быстрее.
Мало того, что скорость - это возможное улучшение, но есть места, где реализация выиграет от большей безопасности типов. В c есть общие приемы (например, хранение данных в пустых указателях, когда они должны быть общими), которые нарушают безопасность типов и где c ++ может обеспечить строгую проверку ошибок. Это не всегда транслируется через интерфейсы к библиотеке c, так как они имеют фиксированную типизацию, но это определенно будет полезно для разработчиков библиотеки и может помочь в некоторых местах, где возможно извлечь больше информации из вызовов предоставляя интерфейсы «как если» (например, интерфейс, который принимает void *, может быть реализован как универсальный интерфейс с концептуальной проверкой того, что аргумент неявно преобразуется в void *).
Я думаю, это было бы отличным испытанием силы c ++ над c.