Loading...

С какво се отличава С++ спрямо своя предшественик?

avatar Георги Кацаров 2 минути
С какво се отличава С++ спрямо своя предшественик?

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

C++ не ви задължава да използвате ООП

C++ не е изцяло Обектно-ориентиран или казано с други думи – можете да пишете C++ код без да използвате класове и при компилацията всичко ще е ОК. Програмният език С++ съдържа някои езикови добавки спрямо езика С, които правят както обектно-ориентираното програмиране, така и общото програмиране по-удобни. C++ не ви налага да използвате обектно-ориентирано програмиране, а ви го предоставя като опция. Всеки С++ компилатор може да компилира и C код, като свойство се явява следствие на това, че С++ е надградена версия на езика С. Без проблеми можете да вмъкнете и С код в С++ програма.

Каква е разликата при алокацията на динамична памет?

Алокацията на динамичната памет както и входа/изхода (Input/Output) се осъществяват по различен начин спрямо С, при който входно-изходните операции се извършват чрез printf и scanf функции, дефинирани в stdio.h хедър, в стандартната библиотека. При C++ това се извършва чрез потоци (streams), които са дефинирани в стандартна библиотека.

Разлика има и в начина по който двата езика извършват алокация на динамичната памет. Алокацията на паметта представлява хардуерна операция, която се управлява чрез операционната система и софтуерни приложения. Самият процес по алокиране на паметта е сравнително прост, без значение дали става въпрос за управление на физическата или виртуалната памет. Програмите и услугите са свързани със специфична памет в зависимост от изискванията, които те имат в момента, в който те се изпълняват. Веднъж след като програмата приключи своята операция, съответната памет се освобождава и се заделя за нуждите на друга програма, или се добавя към основната памет. Алокацията на памет е два основни типа: статична алокация (когато програмата черпи памет по време на нейното компилиране) и динамична алокация (когато програмата черпи памет по време на своята работа).

При С алокирането на динамична памет се извършва чрез malloc, realloc, calloc и free функции. В C++ този процес се управлява чрез “new” и „delete“. Освен това класовете имат специални функции, наречени „деструктори“, които биват извикани, когато обект се освобождава от паметта, чиято отговорност е да изтриват динамично заделена памет. Това са специфични за С++ възможности, които С няма в своя синтаксис.

Унаследяване на библиотеки

Стандартната С++ библиотека запазва старите хедъри от библиотеката на С, но също така добавя и нови. Разликата е, че новоунаследените хедъри започват с буквата „с“. Така например ако една стандартна библиотека в “C” се казва , унаследявайки я в С++, тя ще се преименува на , като окончанието “h“ също отпада при С++.

Както виждате C++ има редица предимства спрямо своя предшественик, които го правят един от най-популярните езици на всички времена. Ако имате основни познания по програмиране (работа с цикли, условни конструкции, изрази и примитивни типове данни) можете да навлезете още по-дълбоко в света на програмирането с един от най-широкоразпространените езици, като запишете курса „C++ Fundamentals – ноември 2018“. Не пропускайте своя шанс!