C++ — разлика између измена

Садржај обрисан Садржај додат
Спашавам 1 извора и означавам 0 мртвим.) #IABot (v2.0.1
Исправљене словне грешке
Ред 5:
== Историја C++-а ==
 
Почетком осамдесетих година у Беловим лабораторијама Бјарне Строуструп, дански научник, радећи на проширивању језика C развио је суштински нов језик кога је назвао ''C са класама''. <ref>{{cite web|title=History of C++|url=http://www.cplusplus.com/info/history/|accessdate=28. 11. 2017.}}</ref> <ref>{{cite web|title=Bjarne Stroustrup's FAQ: "When was C++ invented?"|url=http://www.stroustrup.com/bs_faq.html#invention}}</ref>Закључио је да је [[Simula]] имала веома добре функције за развој великих програма, али је тај језик био преспор за коришћење у пракси. [[BCPL]] ([[Енглески језик|енгл]]. ''Basic Combined Programming Language'') је био брз али превише ниског нивоа за равојразвој великих програма. Строуструп је изабрао C као базу, јер је C био генерално оријентисан, брз и у широкој употреби. Почео је да ради на побољшању програмског језика C додајући му функције сличне онима које има [[Simula]]. Такође, утицај су имали [[ALGOL 68]], [[Ада (програмски језик)|Ada]], [[CLU]] и [[ML (programski jezik)|ML]]. Аутор је желео да побољша језик C развојем подршке објектно-оријентисаном програмирању. У 1983. години тај назив је промењен у C++.
 
Језик C++ се разликује од обичног C-а пре свега подршком објектно-оријентисаном програмирању. Али, у њему има и низ нових
Ред 17:
== Назив ==
 
Према Строуструпу назив C++ симболизује еволуционарни напредак од C-a.<ref name="name">{{cite web|url=http://www.stroustrup.com/bs_faq.html#name |title=Bjarne Stroustrup's FAQ – Where did the name "C++" come from? |accessdate=16. 1. 2008 }}</ref> Назив је осмислио Рик Масцити. Када је Масцити био неформално интервјуисан о настанку имена 1992. године, одговорио је да је назив настао у духу програрамирањапрограмирања, јер оператор за инкрементацију (++) симболише напредак. Тада је било уобичајена пракса да се тако означава побољшана верзија софтвера.
 
== Развојна окружења ==
Ред 60:
</source>}-
 
Линије 4 и 8 указују компајлеру које линије припадају -{<code>main()</code>}- функцији. Све линије кода које се налазе између отворене витичасте заграде у линији 4, и затворене витичасте заграде у линији 8 представљају део -{<code>main()</code>}- функције. У линији 5 је наш први исказ. Опис операција -{<code>cout</code>}- и -{<code>endl</code>}- се налази у оквиру библиотеке -{<code>iostream</code>}-. Међутим, у оквиру библиотеке -{<code>iostream</code>}-, постоји тачно одређени именски простор -{<code>std</code>}- у оквиру кога је наведена дефиниција ових функција за штампање. Стога је неопходно коришћењем исказа -{<code>using</code>}- указати комајлерукомпајлеру да треба да погледа унутар одељка са називом std (скраћенизаскраћеница за стандард) и да покуша да пронађе дефиницију за -{<code>cout</code>}- и -{<code>endl</code>}-, уколико приликом компајлирања није успео нигде другде да пронађе ове дефиниције. Овај исказ је неопходан компајлеру да би успео лакше да пронађе дефиницију операција -{<code>cout</code>}- и -{<code>endl</code>}-, које користимо у линији 6. У линији 6 се налази исказ штампања. -{<code>cout</code>}- је специјални објекат који представља конзолу/екран. Симбол << је оператор излаза, који указује компајлеру да оно што следи након симбола треба бити оштампаноодштампано на екрану/конзоли. -{<code>endl</code>}- је специјалан симбол који курсор пребацује у следећи ред конзоле. Линија 7 је наредба повратка ('''return statement'''). Након завршетка рада програма шаље се повратна вредност систему која описује да ли је програм извршен успешно или не. У овом конретномконкретном примеру, наредбом '''return''' се враћа вредност нула оперативном систему што значи да је све извршено прописно. Пракса је да се користе ненулте вредности када је нешто пошло по злу, односно када програм због неких проблема треба да прекине са радом. <ref>{{cite web|title=Open issues for The C++ Programming Language (3rd Edition)|url=http://www.stroustrup.com/3rd_issues.html}}</ref>
 
== Референце у језику C++ ==
Ред 71:
активним делом меморије односно складишта (storage).
* Једном иницијализована референца не може бити промењена да референцира другу променљиву или објекат. Супротно референцама,
показивачи могу да буду променљенипромењени и да у различитим временским тренуцима показују на различите променљиве односно објекте.
* Референца мора бити иницијализована приликом креирања, за разлику од показивача који могу бити иницијализовани у било ком тренутку.
 
Ред 101:
Конструктор је функција чланица која има исто име као и класа. Улога конструктора је да изврши иницијализацију података чланова класе. За разлику од програмског језика [[Јава (програмски језик)|Java]], где се такозвани „објекти отпаци“ аутоматски бришу коришћењем такозваног garbage collector-a, у C++-у је неопходно написати функцију која мора да обрише алоцирани меморијски простор из хип меморије. Подразумевајуће функције чланице класе које служе у ову сврху се називају деструктори. C++ има могућност да се при позиву конструктора изврши такозвано копирање објеката. Типови конструктора који имају могућност извршења оваквих операција се називају конструктори копирања.
 
Конструктор класе је специјална функција чланица класе која се извршава сваки пут када се креира нова инстанца неке класе. КонтрукторКонструктор ће имати исти назив као и сама класа, док повратни тип функције неће бити чак ни void. Конструктори су веома корисни у циљу постављања почетних (иницијалних) вредности одређеним подацима члановима. Комплементарну улогу конструкторима у C++ програмима имају деструктори. Деструктори су функције које се, као и конструктори, позивају аутоматски, али у овом случају при престанку постојања објекта тј. при његовом деструктуирању. Најчешћи задатак деструктора је деалоцирање меморије и реиницијализација променљивих (нпр. бројача објеката одређене класе). У програму се деструктор функције лако уочавају јер им име почиње знаком "~" (тилда), а следи назив класе којој деструктор припада. Деструктор, као и конструктор, не враћа никакву вредност, па се декларише без навођења типа. Деструктор је од велике користи за ослобађање ресурса пре изласка из програма, као што је на пример затварања фајлова, ослобађање динамички заузете меморије итд.
 
=== Показивачи на C++ класе ===
Ред 111:
 
=== Наслеђивање ===
Наслеђивање је једна од најважнијих особина објектно оријентисаног програмирања. Оно омогућава креирање врло сложених класа крећући се од основихосновних класа, што олакшава креирање и одржавање апликације. Ово такође обезбеђује могућност поновног коришћења написаног кода што убрзава само писање апликације.
 
 
Ред 120:
Један од проблема вишеструког наслеђивања је двосмисленост, која се јавља у случају када базне класе садрже функције са истим називима. Други, и много озбиљнији је проблем „дијаманта“ који настаје када нека класа наслеђује особине две базне класе, а те базне класе су изведене из исте основне класе. Ово води до појаве такозваног дијамантског облика наслеђивања.
 
Многи релативно новији језици као што су Јава и C # ограничавају класе на једноструком наслеђивању, али дозвољавају вишеструко наслеђивање интерфејса. Главна идеја онемогућавања вишеструког наследства у овим језицима је чињеница да оно једноставно чини језике превише сложеним, а на крају изазива нове проблема уместо да решаверешава постојеће. Многи аутори и искусни програмери верују да вишеструко наслеђивање треба избегавати по сваку цену због многих потенцијалних проблема које оно доноси. Међутим, постоје ситуације када је вишеструко наслеђивање најбоље решење, али у тим случајевима га треба користити екстремно промишљено.
 
== C++ стандардна библиотека ==
Ред 127:
* Библиотека OO класа (The Object Oriented Class Library): Представља колекцију класа и одговарајућих функција чланица.
 
СтандарнаСтандардна C++ библиотека садржи све елементе C библиотеке, уз мале измене које обезбеђују сигурност употребе типова података (type safety).
 
'''Стандардна библиотека функција''' се састоји из следећих категорија:
Преузето из „https://sr.wikipedia.org/wiki/C%2B%2B