C++ (читат ся гий сі-плус-плус даколи ся скорочує до CPP (сі-пі-пі)) — у основном компілованый, статічно тіпізованый, C-самаравучый, язык проґрамованя сполочного призначіня, высокого уровня, зотвореный данськым компютерным ученым Бяреном Страструпом, котрый зачав го робити в AT&T Bell Laboratories (Муррей-Гілл, Ню Джерзі) у 1979 годови. Выпусшеный у 1985 годови, гий розширіня про языка проґрамованя С, головнов го ідийов было додати обєктно-орьєнтовані можности у Сі, спозад чого мав имня «C with classes» («русин. Сі из класами»), из тых часу язык ся дуже розвойив. Из 1997, C++ має обєктно-орьєнтовані, сполочні тай функціоналні функційи, звирьху д можности убробкы тямы на низкум уровни про такых сістему, ги мікрокомпютеры, авадь діля зотворіня оперчных сістем, наприклад хосновав ся у Windows и Linux. компілаторы C++ надавут: Free Software Foundation, LLVM, Microsoft, Intel, Embarcadero, Oracle тай IBM. Упирьвоє описаный у меженароднум штандарті ISO/IEC 14882:1998 (C++98), выдтуть выходили сякі вирзійи: C++03, C++11, C++14, C++17, C++20, C++23. Май актулным стандартом же є ISO/IEC 14882:2024 (C++23).
Пудпорює такі парадіґмы проґрамованя, ги процедурноє проґрамованя, обєктово-орьєнтованоє проґрамованя, тай сполочноє проґрамованя. Язык має грубу штандартову бібіліотеку, котора включат у себе поширині контийнеры й алґорітмы, увожіня-вывожіня, реґуларні выражіня, пудпору многопоточности тай другі можности. C++ має у собі особенности як и высокоурувньовых, так и низкоурувньовых языку. Руняно из спередущым — языком C — має май грубу увагу д пудпорі обєктово-орьєнтованого тай сполочного проґрамованя.
C++ Широко хоснує ся про розробку проґрамного засобованя, є єдным из майпопуларных коду проґрамованя, по убзвідованям 2015 года, кулькость проґрамішту Сі++ є около 4,4 міліону. Область го хоснованя включат зотворіня операчных сістем, рузных прикладных проґрам, драйверу, аплікацій про встройиных сістем, высокопродутівных серверу, ай тоже компютерных бавок. Є много реалізацій языка C++, як и задарьных, так и комерційных и діля рузных платформ. Наприклад, про платформы x86 то є GCC, Clang, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder тай инакі. C++ мав грубиньськый уплыв на другі языкы проґрамованя, майсилно на Java, C# и Rust.
Сінтаксіс C++ унаслідує ся уд языка С. На зачинаньови єдным из прінціпу розробкы было усокочіня сполочливости из С. айбо, при тум, C++ ниє у строгум змыслови надмножинов С: кулькость проґрам, которі можут єдинако добре трансловати ся як и компілаторами Сі, так и компілаторами C++, доста велика, айбо не включає всякі возможні проґрамы на С.
Неникавучи ся на широкоє принятя языка, його крітіковали такі доста знані проґрамішты ги Лінус Сторвалдс, Річард Сталлман, Джошуа Блох, Кен Томпсон тай Доналд Кнот.
Історія історичный етап розвояСтенли Ліппман, Pure C++: Hello, C++/CLI ГудЯзык BCPL1966Язык Бі (оріґінална розробка Томпсона пуд UNIX)1969Язык Сі1972«Сі из класами»1980C841984Cfront (выпуск E)1984Cfront (выпуск 1.0)1985Множинноє/віртуалноє наслідованя1988Сполочноє проґрамованя (шаблоны)1991ANSI C++ / ISO-C++1996ISO/IEC 14882:19981998ISO/IEC 14882:20032003C++/CLI2005TR12005C++112011C++142014C++172017C++202020C++232023C++262024
Зотворіня Язык появив ся у зачинаньови 1980 году, коли робутник фірмы Bell Labs Бярен Страуструп придумав шор изліпшинь ид языкови Сі пуд свої потребности. Коли в кунци 1970-ых году Страуструп зачав робити в Bell Labs над задачами теорійи очерідий (у проґрамі діля моделованя телефонных выклику), Бярен увидів, што коли ун пробовав убхосновати еґзістовавші у тот час языкы проґрамованя, моделованя указали ся неефектівными, а убхоснованя высокоефектівных машинных языку низкого уровня, выйшло дуже чажкоє. Позад йихньої ограничиности у выражиньови кода й потребности контроловати булшость процесу. Сяк, язык Сімула має такі возможности, котрых дуже гія было діля розробкы май грубого проґрамного засобованя, айбо робит ун дуже помалы, а язык BCPL доста быстрый, айбо дуже близкый ид языкам низкого уровня и не пудходив діля розробкы май грубого проґрамного засобованя.
Притямивши досвід свойої кандідатської дісертаційи, Страуструп вырішив доповнити язык C (наслідник BCPL) возможностями, котрі были в языкови Сімула. Язык Сі, будучи базовым языком сістемы Unix, на котруй робили компютеры Bell, є быстрым, многофункціоналным и переносимым. Страуструп добавив ид нему возможность роботы з класами и обєктами. У выслідках практічні задачі моделованя указали ся доступными діля вырішіня як из бока часа розробкы (дякувучи хоснованьови подобавучых класу), так и з бока часа убчисліня (дякувучи скороті C). У пирьву очеридь у C были додані класы (из инкапсулаційов), наслідованьом класу, строга провірка тіпу, inline-функційи й арґументы за мовчаньом. Пирьві вирзійи языка, якый иззачинаня кликав ся «C with classes» («Сі из класами»), стали доступныма з 1980 года.
Коли Страуструп розробляв «Сі из класами», ун написав проґраму cfront — транслатор, якый переробляв выхудный код свого языка в выхудный код простого Сі. Сесе позволило робити над новым языком и хосновати го на практіці, хоснувучи ужек мавучу в unix-инфраструктуру діля розробкы на Сі. Новый язык нечекано про автора дустав грубу популарность помеже колеґ и скоро Страуструп ужек не муг лично пудпорьовати його, удповідавучи на тисячі звідань.
Ид 1983 годови в язык были додані нові возможности, такі ги віртуалні функційи, переубтирьханя функцій и оператору, удкликаня, константы, хосноватильськоє контролованя над кроманьованьом слобуднов тямов, изліпшина перевірка тіпа й коментарі в стілі BCPL (//). Дуставшый ся язык ужек перестав быти просто доповненов вирзійов класічного C и быв перейменованый из «Сі из класами» на «C++». Його пирьвый комерційный выпуск став ся в октобри 1985 года.
До зачинаня офіцічної штандартізаційи язык розвойовав ся по булшости силов Страуструпа в удказ на жаданя проґрамістської сполочности. Функцію штандартного описаня языка додержовали написані Cтрауcтрупом пичатні роботы по C++ (описаня языка, діловоє вединя й так дале). И лем у 1998 годови быв ратіфікованый меженародный штандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; по принятьови технічных правок штандарта в 2003 годови — слідувуча вирзія сего штандарта — ISO/IEC 14882:2003.
Из янувара 2018 года Страуструп быв уголошеный лауреатом примійи Чарлза Старка Дрейпера позад инженірьскої діятилности в 2018 годови «за концептуалізацію тай розробку языка проґрамованя C++».
У децембрьови 2022 года C++ засів тритьоє місто в индексови TIOBE, тым же выпередив Java пирьвый раз у історійи индекса. На новембирь 2024 года язык засідає другоє місто по Python, а Java — тритьоє.
Розвуй и штандартізація языка У 1985 ищи до выпуска офіцічного штандарта, выйшло пирьвоє выданя книжкы «Язык проґрамованя C++«. Пирьва комерційна реалізація выйшла в октобри того же года.Страуструп, Бярне (7 Марца 2010). "Bjarne Stroustrup's FAQ: When was C++ invented?". stroustrup.com. Archived з оріґінала 6 фебруара 2016 года. Одержано 16 септембра 2010 года. Ся книжка дає пирьвоє описаня языка, што было воле важно позад того, што не было офіцічного штандарта. У 1989 годови став ся выхуд C++ вирзійи 2.0. Єї нові возможности включали несчислиность наслідованя, абстрактні класы, статічні функційи-части, функційи-константы и сокочині части. У 1990 годови вышло «Коментованоє діловоє руководство за C++», котроє, у послідку стало основов штандарта. Послідні убновіня мали у собі шаблоны, выключіня, простур имнен, нові способы привединя тіпа и буловый тіп. Подля основы діля сокочіня й доступа д сполочным алґорітмам была выбрана Штандартова бібліотека шаблону (STL), розроблена Александром Степановым и Менґ Лі.
Штандартова бібліотека C++ тоже розвойила ся у рокаши з ним. Пирьвым доданьом д штандартовуй бібліотеци C++ стали потокы увожіня-вывожіня, задавучі возможности про заміны традіцічных функцій C printf и scanf. май пузно силным розвойом стандартової бібліотекы стало додаваня у ниї Штандартової бібліотекы шаблону.
Офіцічна штандартізація языка зачала ся у 1998 годови, кой быв опублікованый штандарт ISO/IEC 14882:1998 (знаный гий C++98), розробленый комітетом по штандартізаційи C++ (ISO/IEC JTC1/SC22/WG21 working group). Штандарт C++ не описовав способу именованя обєкту, дакотрых деталий убробкы выключных и другых можностий, изкапчаных из деталами реалізаційи, што робит незовмісным обєктный код, зотвореный рузными компілаторами. Айбо діля сего иншыми людми было зотворено много штандарту діля конкретных архітектур тай операчных сістем. У 2003 годови быв опублікованый штандарт C++ ISO/IEC 14882:2003, де были выправлині явивші ся хыбы и недоробкы спередущої вирзійи штандарта. У 2005 годови быв опублікованый звід Library Technical Report 1 (накурто именованый TR1). Ниє офіцічно частьов штандарта, звід описує розширіня штандартної бібліотекы, котрі, за думков автору, мавут быти включині у слідувучу вирзію штандарта. Ступінь пудпоры TR1 изліпшує ся майжек в усьых пудпорювучых компілаторах языка C++. Из 2009 года ийшла робота по убновіньови спередущого штандарта. Выхудна вирзія называла ся C++09, у слідувущуму годови ю перейменовали на C++0x. Штандарт быв опублікованый у 2011 годови тай именованый C++11. У него включині доповніня у ядрови языка й розширіня штандартної бібліотекы, в тому числови груба часть TR1. Слідувуща вирзія штандарта, C++14, выйшла в авґустови 2014 года. Уна має у собі в основному уточніня тай выправліня хыб спередущої вирзійи. Штандарт C++17, опублікованый у децембрьови 2017 года, включив у штандартну бібліотеку паралилні вирзійи штандартных алґорітму й зрушив дакотрі старі тай дуже рідко хоснуйимі елементы. Послідня штабілна на типирішньый момент робляча вирзія штандарта — C++20. Меже вшиткым, ун має у собі прінціпно новоє — пудпору модулу. Штандарт C++23 на даный момент актівно убговорює ся комітетом ISO.
C++ дале розвойив ся, про то убы удповідати типирішным жаданям. Єдна з ґруп, розроблявучых язык C++ и направлявучых комітетови по штандартізаційи C++ предклала його изліпшиня — то Boost, котра занимат ся, у тому числі, довершиньом возможностю языка путьом добавліня у него особенностю метапроґрамованя.
Нико не має права на язык C++, ун є слобудным. Айбо сам документ штандарта языка (за выключиньом чорновика) не доступный задарь. У рамках процеса штандартізаційи ISO выпускає дакулько виду выдань. У частности, технічні звіды тай технічні характерістікы публікувут ся, коли «видко будучность, айбо ниє доразної возможности на погоджіня діля публікаційи меженародного штандарта.» До 2011 года было опубліковано три технічні звіда по C++: TR 19768: 2007 (тоже знаный ги C++, Технічный звід 1) про розширіня бібліотекы в основному интеґрованый у C++11, TR 29124: 2010 про шпеціялных математічных функцій, і TR 24733: 2011 про десятичної арітметікы из плававучов точков. Технічна шпеціфікація DTS 18822: 2014 (по файловуй сістемі) была утвержена в зачинаньови 2015 года, и другі технічні характерістікы находят ся у стадійи розвоя й чекавут одобріня.
У марцьови 2016 года в Російи была зотворена робоча ґрупа РҐ21 C++. ґрупа была орґанізована про збур жадань до штандарта C++, и выправліня йих у комітет и сокочіня на сполочных зборах Меженароднов орґанізаційов по штандартізаційи (ISO).
Історія имня Имня «Сі++» было выдуманоє Ріком Масітті (Rick Mascitti) и пирьвый раз было захоснованоє у децемброви 1983 года. Май скоро, на етапови чиніня, новый язык называв ся «Сі из класами». Имня, што выйшло у выслідкови, выходит уд оператора Сі «++» (Избулшіня значіня змінної на єденицю) тай поширеному способови присвойиня новых имен компютерным проґрамам, што лежит у додаваньови до имня сімбола «+» для позначіня изліпшинь. ведля Страуструпа, «се имня указує на еволуційну природу міняня Сі». Имньом «С+» называли скуршый, не скапчаным из С++ язык проґрамованя.
Язык тож не называв ся D, того што «ун є розширіньом C и не старає ся выправляти хыбы путьом зрушіня елементу C»