Многие склонны писать «C / C ++», как если бы они были одним и тем же. Хотя они имеют много общего, они явно не совпадают.
Но каковы действительно фундаментальные различия между C и C ++? Является ли C ++ улучшенной версией C или в C ++ есть функции, которых нет в C ++?
Ответы:
Следующие пункты относятся к C ++:
источник
C ++ был изобретен для управления сложностью, с которой C не мог справиться. Например, общая проблема с C состояла в том, что вы могли «исчерпать имена для переменных» (конечно, их нельзя понимать буквально), потому что не было инкапсуляции, пространств имен и т. Д.
Кроме того, в C нет исключений, поэтому обработка ошибок очень подвержена ошибкам, поскольку от пользователя библиотеки всегда зависит проверка возвращаемых значений функций, тогда как в случае исключений разработчик библиотеки просто генерирует исключение, которое гарантирует, что поток программы будет остановлен.
C ++ помогает, имея конструктор init объекты, который автоматически вызывается компилятором. В отличие от структур C, которые должны быть инициализированы программистом (следовательно, это еще одна область, подверженная ошибкам).
Наконец, ООП предлагает множество других преимуществ, таких как повторное использование объектов, а также общие концепции, основанные на программировании, такие как шаблоны и шаблоны, которые позволяют повторно использовать исходный код и т. Д.
И много других вещей, которые заняли бы слишком много времени, чтобы перечислить здесь.
источник
В общем, все, что существует в C, поддерживается в C ++. Очевидно, что обратное абсолютно неверно.
Проще говоря, C ++ является объектно-ориентированным (например, у вас есть классы), а C - нет.
C ++ имеет логический тип, а C89 - нет.
Это разные языки. Они просто разделяют большую часть синтаксиса.
источник
_Bool
, сbool
псевдонимом).long long
тип данных, который (пока) не является частью ISO C ++.C99 имеет несколько функций, которые не существуют (по крайней мере, в той же форме) в C ++ (например, гибкие элементы массива, массивы переменной длины и т. Д.)
C99 также много добавил в библиотеку, которой нет в стандарте C ++ 98/03; большая часть этого была добавлена в C ++ 11.
С точки зрения базовой ориентации, C в основном поддерживает структурированное процедурное программирование. C ++ поддерживает это, а также объектно-ориентированное программирование, общее программирование и метапрограммирование (выполнение произвольных вычислений во время компиляции). В C ++ 11 он добавляет несколько кусочков, которые можно по крайней мере принять за поддержку функционального программирования (например, лямбда-выражения). В C ++ 14 добавлено еще несколько, но большинство из них действительно более удобны, чем какие-либо серьезные изменения в ориентации.
источник
Лично я считаю, что шаблоны - это самая важная особенность, которую C ++ добавляет в C.
источник
#define GENERATE_INTERFACE(T) T T##_func(T x);
; (тип) безопасная перегрузка / шаблоны в C. Я согласен с Томасом в том, что деструкторы - гораздо более важная функция, в которой отсутствует C. Но деструкторы часто скрывают важный код. Пространства имен (область), на мой взгляд, являются наиболее важными.