Каково различие между C и [закрытым] C++

Всегда? Никогда. Порядок всегда один и тот же: неопределенный (возможно, физический порядок хранения документов). Если вы не сортируете его.

15
задан Dinah 12 March 2009 в 21:56
поделиться

10 ответов

Проверьте FAQ Stroustrup здесь , конкретно:

, Каково различие между C и C++?

C++ является прямым потомком C, который сохраняет почти все C как подмножество. C++ обеспечивает более сильную проверку типа, чем C и непосредственно поддерживает более широкий диапазон стилей программирования, чем C. C++ является "лучшим C" в том смысле, что он поддерживает стили программирования, сделанного с помощью C с лучшей проверкой типа и большей письменной поддержкой (без снижения эффективности). В том же смысле ANSI C является лучшим C, чем K& R C. Кроме того, C++ поддерживает абстракцию данных, объектно-ориентированное программирование и универсальное программирование (см. Язык Программирования на C++ (3-й Выпуск)"; Приложение B обсуждая проблемы совместимости доступно для загрузки).

25
ответ дан 30 November 2019 в 23:47
поделиться

Язык C++ говорит, что они - то же:

int C = 0;
assert(C++ == C);
26
ответ дан 30 November 2019 в 23:47
поделиться

Я думаю, что Вы ответили на свой собственный вопрос: Классы

совершенно другая парадигма дизайна. Я думаю, что беспорядок прибывает, потому что многие люди разрабатывают программы C++, которые являются в основном C программами и даже не понимают это.

, Который позволяет, в слове его создателя, Stroustrup:

Редактирование: добавленный некоторый другой забавный материал

16
ответ дан 30 November 2019 в 23:47
поделиться

Короче говоря, C стремится быть "портативным ассемблерным языком". Это сохраняет вещи простыми, позволяет Вам сделать вещи, которые отображаются почти непосредственно на используемое оборудование, и не представляет много абстракций высокого уровня (у Вас есть функции, и.... это об этом)

, C++ пытается быть всем. Высокоуровневый язык, низкоуровневый язык, объектно-ориентированный язык, язык мультипарадигмы, системный язык программирования, встроенный язык программирования и язык разработки приложений.

два языка действительно не имеют много общего, кроме некоторого общего синтаксиса. Программа C могла бы скомпилировать как C++ только с незначительными изменениями, но это будет не иметь ничего общего с "надлежащим" кодом C++, написанным для языка.

7
ответ дан 30 November 2019 в 23:47
поделиться

Этот вопрос не имеет короткого ответа.
В общих поддержках C++:
- парадигма ООП;
- универсальное программирование;
- обрабатывают метапрограммирование по шаблону;
- Абстрактные типы данных;
- библиотеки New и стандарт поддерживает элементы функциональной парадигмы;
- другие инструменты для делают Вашу программу самой приемлемой;
- Также Вы могли записать программы на подобном C стиле, но использовать компилятор C++;


, Но чистый C - немного быстрее, чем C++ и больше низкого уровня.

3
ответ дан 30 November 2019 в 23:47
поделиться

Шаблоны являются другой большой разницей (в дополнение к классам/объектам). Шаблоны включают, например, безопасные с точки зрения типов универсальные контейнерные типы (их первый пример использования) и (ухудшаемые) лямбда-выражения (boost::lambda).

C++ является намного большим языком (не просто библиотека), чем C.

3
ответ дан 30 November 2019 в 23:47
поделиться

Другой C++ функции имеет по C, обработка исключений в форме броска... ловят.

3
ответ дан 30 November 2019 в 23:47
поделиться

Вот веб-сайт, показывающий "несовместимости" между c и C++:

http://david.tribble.com/text/cdiffs.htm#C++-vs-C

существует на самом деле довольно много областей, куда c и C++ отличаются (в дополнение к классам, шаблону, исключениям, и т.д.).

До существенных различий, вот список, который касается его хорошо:

  • анонимные объединения
  • классы
  • конструкторы и деструкторы
  • исключения и блоки попытки/выгоды
  • внешние функциональные связи (например, экстерн "C")
  • перегрузка функции
  • функции членства
  • пространства имен
  • новые и операторы delete и функции
  • оператор, перегружающийся
  • ссылочные типы
  • стандартная библиотека шаблонов (STL)
  • шаблонные классы
  • шаблонные функции
7
ответ дан 30 November 2019 в 23:47
поделиться

C++ намного больше, чем C с классами. Существует много других понятий в C++ как шаблоны, функция и перегрузка оператора, исключения и многие другие, уже упомянутые здесь. Это делает C++ очень мощным и гибким, но также и трудно учиться. Не то, чтобы единственные понятия трудно понять, но сумма их и как они играют вместе. Смотрите на повышении для наблюдения то, что все возможно сделать с C++. И я предполагаю это возрасты инструментов для понимания то, что происходит под капотом, который очень ясен в случае C.

Или помещать его вкратце: C++ намного больше тогда C с классами, или другими словами C++ является намного больше тогда Java плюс управление памятью.

3
ответ дан 30 November 2019 в 23:47
поделиться

В 1-й из 2-х частей C++ для программистов на C перечислены некоторые отличия, не связанные с ООП:

  • Аргументы функций по умолчанию
  • Перегрузка функций
  • Вы можете объявлять локальные переменные в любом месте кода, где они вам нужны, а не только в начале функции (также особенность C99)
  • Ссылки, как в int& x
  • Конст-корректность в целом
  • Пространства имен
  • Встроенный тип boolean, bool, с ключевыми словами true и false (также в C99 через stdbool. h)
  • Ключевое слово inline и связанные с ним причуды, включая неявный инлайнинг и автоинлайнинг
  • Гораздо большая стандартная библиотека, чем в C
2
ответ дан 30 November 2019 в 23:47
поделиться