C++
Z Wikipedie, otevřené encyklopedie
C++ je objektově orientovaný programovací jazyk, který vyvinul Bjarne Stroustrup a další v Bellových laboratořích AT&T rozšířením jazyka C. C++ podporuje několik programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování, není tedy jazykem čistě objektovým. V současné době patří C++ mezi nejrozšířenější programovací jazyky.
Obsah |
[editovat] Historie
[editovat] Název C++
Starší verze jazyka, společně označované jako „C with Classes“ (česky C s třídami), byly používány od roku 1980. Jméno „C++“ vymyslel Rick Mascitti v létě 1983. Toto jméno zdůrazňuje evoluční povahu změn oproti jazyku C; „++“ je operátor inkrementu v C. Poněkud kratší jméno „C+“ je syntaktická chyba, bylo též použito jako jméno jiného nesouvisejícího jazyka.
[editovat] Kompatibilita s jazykem C
Jazyk C je až na několik jasně definovaných výjimek podmnožinou C++. Jak uvádí Bjarne Stroustrup, všechny programy uvedené ve slavné učebnici jazyka C The C Programming Language od Briana W. Kernighana a Dennise M. Ritchieho jsou zároveň programy v C++.
První překladače C++ byly preprocesory, které překládaly z C++ do čistého C. Považovat jazyk C++ za pouhé rozšíření jazyka C by ale bylo chybou, protože není s jazykem C zcela kompatibilní. Některé programy v jazyce C nelze překládat překladači pro C++.
[editovat] „Hello, World!“
Následující jednoduchá aplikace vypíše „Hello, world!“ na standardní výstup.
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
[editovat] Argumenty funkce main
Tato aplikace vypíše všechny argumenty funkce main.
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
for(int i = 0; i < argc; ++i)
{
cout << i + 1 << ": " << argv[i] << endl;
}
}
[editovat] Vlastnosti jazyka a rozdíly proti jazyku C
[editovat] Objekty
Koncepce objektů jazyka C++ byla převzata z jazyka Simula 67. Objekty (třídy) jsou pojaty jako přirozené rozšíření datových struktur jazyka C o možnost vkládání členských funkcí. C++ umožňuje řídit viditelnost složek objektů pro ostatní části programu. Pro objekty je možná vícenásobná dědičnost.
Příklad definice třídy:
class Komplex {
double x; // datové složky objektu
double y; // datové složky objektu
public: // následující části objektu budou viditelné i mimo objekt
Komplex(); // konstruktor - funkce volaná automaticky při vytvoření objektu
~Komplex(); // destruktor - funkce volaná automaticky při rušení objektu
double r() const { return sqr(x*x+y*y) }; // funkce třídy
};
void f()
{
// deklarace dvou objektů dané třídy:
Komplex A;
Komplex B;
// následují další příkazy…
}
[editovat] Dědičnost
Pod tímto pojmem se skrývá asi ta největší zbraň OOP. Hlavní myšlenka dědičnosti je znovupoužitelnost, to znamená, že můžeme vytvářet nové třídy založené na třídě, která již byla definována, místo toho abychom museli znovu psát již jednou napsaný kód jen s jinými typy proměnných. Díky dědičnosti je možné napsat kód jednou pro obecnější typ a poté ho používat pro všechny jeho potomky.
[editovat] Šablony
Šablony dále rozšiřují znovupoužitelnost kódu, neboť umožňují napsat kód se zcela obecným (neurčeným) datovým typem. Jsou užitečné především pro základní typy, které v C++ nejsou objekty: mnohé jiné jazyky mohou dosáhnout stejné funkcionality použitím kořene objektové hierarchie.
[editovat] Přetěžování (Polymorfizmus) funkcí a operátorů
Jazyk C++ umožňuje deklarovat více funkcí se stejným názvem. Kompilátor určí správné použití podle počtu a typu parametrů. Tato technika se nazývá přetěžování funkcí. Velmi silnou vlastností jazyka je i možnost přetěžovat standardní operátory (například '+' nebo '=') a tak přirozeně využívat tyto operátory pro nově vytvářené třídy a tvorbu abstraktních datových typů.
[editovat] Literatura
- The C++ Programming Language: Bjarne Stroustrup, special ed., Addison-Weslye, ISBN 0-201-70073-5, 2000
- The C++ Standard, Incorporating Technical Corrigendum 1, BS ISO/IEC 14882:2003 (2nd ed.), John Wiley & Sons, ISBN 0-470-84674-7
- Brian W. Kernighan, Dennis M. Ritchie: The C Programming Language, Second Edition, Prentice-Hall, ISBN 0-13-110370-9 1988
- Programování v C++: Miroslav Virius, Vydavatelství ČVUT, druhé vydání, ISBN 80-01-02978-6 2004
- Naučte se C++ za 21 dní: Jesse Liberty, Computer Press, ISBN 80-7226-774-4, 2002
- Programovací jazyk C++ pro zelenáče: Petr Šaloun, Neokortex s.r.o., ISBN 80-8633-018-4, 2005
- Rozumíme C++: Andrew Koenig, Barbara E. Moo, Computer Press, ISBN 80-7226-656-X, 2003
- Úvod do C++: Prof. Ing. Aleš Čepek, CSc., Vydavatelství ČVUT, 2004
[editovat] Externí odkazy
- http://www.research.att.com/~bs/ - domovská stránka Bjarne Stroustrupa; mimo jiné uvádí historii C++, odpovědi na často kladené otázky a podrobný glosář. Jde o základní zdroj informací a odkazů věnovaných C++.
- www.builder.cz – Informační server o programování
- www.programujte.com - další web věnovaný programování (kurz C++)
[editovat] Vývojové nástroje
- gcc (GNU Compiler Collection) - multiplatformní překladač pro jazyky C, C++, Java a další (svobodný software) - viz GCC
- Code::Blocks - free multiplatformni C/C++ vývojové prostředí
- Anjuta - vývojové prostředí pro operační systém GNU/Linux napsané v GTK+ (GNOME) (svobodný software) - viz Anjuta
- Bloodshed Dev-C++ - vývojové prostředí pro Windows (svobodný software) - viz Dev-C++
- Borland C++Builder - vizuální vývojové prostředí pro platformu Windows i Linux (přenositelnost zdrojového kódu) - viz C++Builder)
- MS Visual C++ - vývojové prostředí společnosti Microsoft - viz Visual C++
| Programovací jazyky | |||
|
ABAP | Ada | AWK | Assembler | C | C++ | C# | COBOL | ColdFusion | Clean | D | Eiffel | Erlang | Flex | Fortran | JADE | Java | JavaScript | Lisp | Lua | Oberon | Object Pascal | Objective-C | Pascal | Perl | PHP | Python | REALbasic | REBOL | RPG | Ruby | SQL / PL/SQL | Tcl / Tcl/Tk | Visual Basic / VBScript | VB.NET | Visual FoxPro
|

