Каковы существенные различия между C и C++ и когда Вы выбрали бы один по другому?

Используйте np.swapaxes ():

>>> x = np.array([[1,2,3]])
>>> np.swapaxes(x,0,1)
array([[1],
       [2],
       [3]])
10
задан Ryan Guill 22 January 2009 в 15:45
поделиться

7 ответов

В то время как C является чистым процедурным языком, C++ является языком мультипарадигмы. Это поддерживает

  • Универсальное программирование: Разрешение написать код однажды и использовать его с различными структурами данных.
  • Метапрограммирование: Разрешение использовать шаблоны, чтобы сгенерировать эффективный код во время компиляции.
  • Контроль: Позволяет осматривать определенные свойства во время компиляции: Какой тип выражение имеет? Сколько параметров функция имеет? Какой тип каждый имеет?
  • Объектно-ориентированное программирование: Разрешение программисту программировать объектно-ориентированный, со сложными функциями, такими как множественное наследование и частное наследование.
  • Процедурное программирование: Позволяет программисту помещать функции, свободные от любых классов. Объединенный с расширенными функциями, такими как ADL позволяет писать чистый код, отделенный от специфических особенностей определенных классов.

Кроме тех, C++ в основном сохранил совместимость с кодом C, но существуют некоторые различия. Они могут быть считаны о в Приложении D Стандарта C++, вместе с причинами и возможные зафиксированный, чтобы заставить C кодировать действительный код C++.

15
ответ дан 3 December 2019 в 13:48
поделиться

C++ составляет 99% за надмножество C. Это немного более строго в синтаксисе с несколькими очень мелкие различия в терминах вещей, изменяющихся.

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

В C++ существует несколько других льгот: шаблоны, потоковые операторы, передача ссылкой (немного менее сбивающий с толку, чем передача указателем)

Что Вы терпите неудачу для идущего C++? Это пропускает некоторые взломы самого низкого уровня, для которых много людей использует C. Я не помню ни одного из них бесцеремонно, но я никогда не слышал хорошего аргумента для того, чтобы обмануть компилятор в выполнение, что Вы хотите за исключением способа продвинуть эффективность что дополнительные 10%.

8
ответ дан 3 December 2019 в 13:48
поделиться

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

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

Таким образом для ответа на вопрос более непосредственно большинство моих больших, высокопроизводительных проектов записано в C++. Если я буду работать над чем-то как драйвер или встроенная система, то я буду ожидать использовать C.

6
ответ дан 3 December 2019 в 13:48
поделиться

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

  • Более сильный ввод.
  • Строковый класс включен в стандартную библиотеку.
  • Класс массива (вектор), который растет, поскольку Вы нуждаетесь в нем к и обрабатываете все выделение и освобождение памяти для Вас.

Лично, я чувствую, что те три вещи делают использование C++ стоящий того даже при использовании его для написания подобного C кода (иначе процедурный, не объектно-ориентированного кода).

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

3
ответ дан 3 December 2019 в 13:48
поделиться

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

2
ответ дан 3 December 2019 в 13:48
поделиться

Если Вы никогда не использовали язык, который требует, чтобы Вы сделали ручное управление памятью, я пошел бы для C сначала.

Концентрат на основных принципах C как строки, указатели функции, и как память используется и управляется. Они все передадут при создании перехода к C++. Прежде всего остального удостоверьтесь Вы действительно grok указатели, как они касаются памяти и отношений между указателями и массивами. Я сказал бы, чтобы быть всесторонним программистом, понимающим, что эти вещи требуются.

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

5
ответ дан 3 December 2019 в 13:48
поделиться

Для тех из Вас с опытом с обоими, каковы существенные различия?

C является подмножеством, C++ является надмножеством. C++ включает функции для поддержки объектно-ориентированного программирования (например, "полиморфизм"), и много других функций.

Для вновь прибывшего к также, который был бы лучше для изучения?

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

Есть ли ситуации, где Вы могли бы выбрать C, но затем другие ситуации, где Вы выберете C ++?

Я выбрал бы C over C ++ в редких, редких ситуациях, где целевая платформа поддерживает C, но не C++ (т.е. на некоторых встроенных устройствах).

2
ответ дан 3 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: