По большей части С++ представляет собой надстройку над стандартным ANSI С, и фактически все программы на С являются также программами и на С++. Тем не менее между этими языками имеется несколько различий, и наиболее важные из них обсуждаются ниже.
Одним из наиболее важных различий между С и С++ является тот факт, что в С функция, объявленная следующим образом:
int f();
ничего не говорит о своих параметрах. Это означает, что функция может иметь параметры или не иметь их вовсе. В отличие от этого, в С++ объявленная таким образом функция не имеет параметров. Иными словами, в С++ следующие два объявления эквивалентны:
int f();
int f(void);
В С++ ключевое слово void является факультативным. Многие программисты на С++ включают void в качестве средства, улучшающего читаемость программы и указывающего, что у функции нет параметров.
В С++ все функции должны иметь прототипы. В С это требование является факультативным (хотя хорошая программистская практика подразумевает использование прототипов и в С-программах).
Небольшая, но вместе с тем потенциально очень важная разница между С и С++ заключается в том, что в С символьная константа автоматически повышается до целого числа. В С++ это не так.
В С объявление глобальной переменной несколько раз не является ошибкой, хотя и не служит признаком хорошего программирования. В С++ это является ошибкой.
В С идентификатор имеет по крайней мере 31 значащий символ. В С++ все символы рассматриваются как значащие. Однако, как показывает практика, очень длинные идентификаторы редко нужны.
В С можно вызвать функцию main() из программы, хотя это и нетипично. В С++ это недопустимо.
В С нельзя взять адрес регистровой переменной. В С++ можно это сделать.