Различия языка С++ от Си.



Прежде чем начать изучать язык программирования С++ вы должны понимать что это отдельный язык. Хоть он и «сын» языка Си и многим на него похож, но также у них есть много различий. Си, ориентирован на системное программирование. С++, универсальный язык, на 99% совместим с Си. Сегодня я расскажу о всех различиях С++ от Си.

Язык программирования С++ задумывался как язык, который будет:

  • лучше языка С;
  • поддерживать абстракцию данных;
  • поддерживать объектно-ориентированное программирование.

Все различия языков:

1. В C++ появились классы и объекты. Технически класс C++ — это тип структуры в C, а объект — переменная такого типа. Разница только в том, что в C++ есть еще модификаторы доступа и полями могут быть не только данные, но и функции.

2. То, что в C++ — наследование, в C — это просто структура в структуре. При программировании в стиле C++ применяются такие красивые и звучные слова, как «класс Circle порожден от класса Point» или «класс Point наследуется от класса Circle и является производным от него». При этом реальных усовершенствований два. Первое — поля Point считаются так же и полями Circle, в результате доступ к ним записывается короче, чем в C. Второе — в обоих структурах можно иметь функции-методы, у которых имена совпадают с точностью до имени структуры.

3. В C++ появились две новые операции: new и delete. При вызове new автоматически вызывается конструктор, а при вызове delete — деструктор. Нововведение можно описать формулой: new = malloc + конструктор, delete = free + деструктор.

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

5. Разработчики C++ ввели слово var. А чтобы все это выглядел оригинально, «var» они переименовали в «&» и назвали «ссылкой». Это вызвало большую путаницу, так как в C уже были понятия «указатель» и «адрес» (обозначался тем же символом &), а понятие «ссылка» звучит тоже как что-то указующе-адресующее.

6. Желание программистов C контролировать типы параметров в define-ах породило в C++ inline-функции. Такая функция — это обычный define с параметрами, только не надо мучиться с символами «\» и проверяются типы. Желание узаконить в параметрах define имя типа породило template. Главный плюс template — то, что #define с одинаковыми параметрами породит два одинаковых куска кода. А template в компиляторе скорее всего будет соптимизирован: одинаковые куски кода будут соединены в один.

7. Разные стандартные расширения файлов. file.c — означает файл написан на языке С, а file.cpp — означает что файл написан на языке С++.

8. В С++ ключевое слово void является факультативным. Многие программисты на С++ включают void в качестве средства, улучшающего читаемость программы и указывающего, что у функции нет параметров.

9. В С++ все функции должны иметь прототипы. В С это требование является факультативным.

10. В С символьная константа автоматически повышается до целого числа. В С++ это не так.

11. В С объявление глобальной переменной несколько раз не является ошибкой, хотя и не служит признаком хорошего программирования. В С++ это является ошибкой.

12. В С идентификатор имеет по крайней мере 31 значащий символ. В С++ все символы рассматриваются как значащие.

13. В С можно вызвать функцию main() из программы, хотя это и нетипично. В С++ это недопустимо.

14. В С нельзя взять адрес регистровой переменной. В С++ можно это сделать.

Я постарался написать все различия С++ от Си, но, если вы думаете, что я что-то пропустил можете написать в комментариях.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Один комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Chinese (Traditional)EnglishJapaneseRussianUkrainian

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: