С какво се отличава С++ спрямо своя предшественик?
Неведнъж сме споменавали в материалите за C++, че името на езика подчертава това, че той се явява надградена версия на по-стария програмен език С. Нека сега разгледаме какво е общото между двата езика, както и какво може С++, което С не може.
C++ не ви задължава да използвате ООП
C++ не е изцяло Обектно-ориентиран или казано с други думи – можете да пишете C++ код без да използвате класове и при компилацията всичко ще е ОК. Програмният език С++ съдържа някои езикови добавки спрямо езика С, които правят както обектно-ориентираното програмиране, така и общото програмиране по-удобни. C++ не ви налага да използвате обектно-ориентирано програмиране, а ви го предоставя като опция. Всеки С++ компилатор може да компилира и C код, като свойство се явява следствие на това, че С++ е надградена версия на езика С. Без проблеми можете да вмъкнете и С код в С++ програма.
Каква е разликата при алокацията на динамична памет?
Алокацията на динамичната памет както и входа/изхода (Input/Output) се осъществяват по различен начин спрямо С, при който входно-изходните операции се извършват чрез printf и scanf функции, дефинирани в stdio.h хедър, в стандартната библиотека. При C++ това се извършва чрез потоци (streams), които са дефинирани в стандартна библиотека.
Разлика има и в начина по който двата езика извършват алокация на динамичната памет. Алокацията на паметта представлява хардуерна операция, която се управлява чрез операционната система и софтуерни приложения. Самият процес по алокиране на паметта е сравнително прост, без значение дали става въпрос за управление на физическата или виртуалната памет. Програмите и услугите са свързани със специфична памет в зависимост от изискванията, които те имат в момента, в който те се изпълняват. Веднъж след като програмата приключи своята операция, съответната памет се освобождава и се заделя за нуждите на друга програма, или се добавя към основната памет. Алокацията на памет е два основни типа: статична алокация (когато програмата черпи памет по време на нейното компилиране) и динамична алокация (когато програмата черпи памет по време на своята работа).
При С алокирането на динамична памет се извършва чрез malloc, realloc, calloc и free функции. В C++ този процес се управлява чрез “new” и „delete“. Освен това класовете имат специални функции, наречени „деструктори“, които биват извикани, когато обект се освобождава от паметта, чиято отговорност е да изтриват динамично заделена памет. Това са специфични за С++ възможности, които С няма в своя синтаксис.
Унаследяване на библиотеки
Стандартната С++ библиотека запазва старите хедъри от библиотеката на С, но също така добавя и нови. Разликата е, че новоунаследените хедъри започват с буквата „с“. Така например ако една стандартна библиотека в “C” се казва