C++
| Парадигма | хибриден език: обобщено програмиране, обектно-ориентиран, процедурен |
|---|---|
| Реализиране през | 1985, последно ревизиран 2011 |
| Автор | Бярне Строуструп |
| Типове данни | статичен, слаба, необезопасена, номинативен |
| Програмни диалекти | ANSI C++ 1998 , ANSI C++ 2003 |
| Повлиян от | C, Simula, Ada 83, CLU |
| Повлиява | Ada 95, C#, Java, PHP, D |
С++ (произнася се „си-плюс-плюс“ в оригинал на английски) е неспециализиран език за програмиране от високо ниво. Той е обектно-ориентиран език със статични типове. От 1990-те, C++ е един от най-популярните комерсиални езици за програмиране.
Бярне Строуструп разработва C++ през 1983 г. в Лабораториите Бел като разширение на езика C - езикът е базиран на C, но в него са добавени редица допълнителни възможности и са направени няколко промени. Основната разлика между C и C++ е, че C++ съдържа вградена в езика поддръжка на обектно-ориентирано програмиране. В C++ са добавени класове, множествено наследяване, виртуални функции, overloading, шаблони (templates), обработка на изключения (exceptions) и вградени оператори за работа с динамична памет. Езиковият стандарт на C++ е ратифициран през 1998 като ISO/IEC 14882:1998, през 2003 година има преразглеждане на стандарта - ISO/IEC 14882:2003, а текущата му версия е от 2011 - ISO/IEC 14882:2011.
Повечето програми на C могат директно или със съвсем малки модификации да бъдат компилирани с компилатор за езика C++. Поради паралелното си развитие с Turbo Pascal и Object Pascal в посока обектна ориентираност, С++ има общи черти с тях, но съществуват и редица разлики. Поради заимстване на множество концепции от C++, езикът Java има много общи черти със C++.
Една голяма част от приложните програми на много операционни системи, както и някои от самите операционни системи, са написани на този език.
Съдържание |
Hello, world! [редактиране]
Една примерна програма "Hello, World!", реализирана на С++, изглежда така:
#include <iostream> using namespace std; int main() { cout << "Hello, World!" << endl; return 0; }
Работа с прости обекти [редактиране]
#include <iostream> #include <string> using namespace std; //обект реализиращ книга в книжарница class Book { public: double price; int year; string name; void ShowInfo() const { cout << "Заглавие: " << name << "\n"; cout << "Цена: " << price << "\n"; cout << "Година на издаване: " << year << "\n"; } }; int main() { Book book; cout << "Въведете заглавие: "; getline(cin, book.name); //прочитаме ред от стандартният вход cout << "Въведете цена: "; cin >> book.price; cout << "Въведете дата на издаване: "; cin >> book.year; book.ShowInfo(); //извеждаме получените данни return 0; }
Философия на езика [редактиране]
В "The Design and Evolution of C++ (1994)", Бярне Строуструп изяснява някои от правилата, според които той е моделирал C++:
- C++ е моделиран като статичен език за общи цели, като запазва ефикасността и преносимостта на C
- C++ е създаден да поддържа множество стилове на програмиране (процедурно програмиране, абстракция на данните, обектно-ориентирано програмиране и обобщено програмиране)
- C++ е създаден да дава избор на програмиста, дори той да е неправилен
- C++ е моделиран като умерен преход от C
- C++ избягва функции, които са платформено-зависими
- C++ е създаден да работи без сложна среда за разработка
Познаването на правилата помага за правилното разбиране на C++. Много повече за езика може да бъде открито в "The Design and Evolution of C++".
Компилатори [редактиране]
| Компилатор | Компания | Операционни системи | Архитектури | Безплатни |
|---|---|---|---|---|
| GNU Compiler Collection | GNU | BSD, Linux, Mac OS X, OpenSolaris, Solaris, Windows | ARM, MIPS, PowerPC, SPARC, x86, x86-64 | |
| Sun Studio | Sun Microsystems | Solaris, OpenSolaris, Linux | SPARC, x86, x86-64 | |
| Intel C++ Compiler | Intel | Linux, Mac OS X, Windows | x86, x86-64 | |
| Borland C++ | Borland | Windows | i86pc | |
| Open Watcom | Sybase | Windows | i86pc | |
| Visual C++ | Microsoft | Windows | x86, x86-64 |
Стандарти [редактиране]
- виж ISO/IEC 14882
| Година | C++ Стандарт | Неформално име |
|---|---|---|
| 1998 | ISO/IEC 14882:1998 | C++98 |
| 2003 | ISO/IEC 14882:2003 | C++03 |
| 2007 | ISO/IEC TR 19768:2007 | C++TR1 |
| 2011 | ISO/IEC 14882:2011 | C++11 |