C++
Uit Wikipedia, de vrije encyclopedie
C++ is een programmeertaal gebaseerd op C.
In tegenstelling tot C is C++ een multi-paradigmataal, wat inhoudt dat er verschillende programmeerparadigma's gebruikt kunnen worden. De taal is ontworpen door Bjarne Stroustrup voor AT&T Labs, als verbetering van C. De naam is afkomstig van de programma opdracht "c++", wat in de taal C betekent: verhoog de waarde van de variabele c met 1.
Inhoud |
[bewerk] Objectgeoriënteerd
De belangrijkste uitbreiding op C is de toevoeging van klassen (objectgeoriënteerd programmeren). De klasse-ondersteuning omvat onder andere
-
- vb: virtual void Print();
- abstracte klassen (of methoden)
-
- vb: virtual void Print()=0;
-
- vb: class Taxi: public Vervoermiddel { ... }
[bewerk] Templates
Een andere uitbreiding ten opzichte van C zijn templates (de basis van generiek programmeren). Een template of sjabloon is een functie of klasse die gebruik maakt van een abstract datatype.
Een voorbeeld is het berekenen van het gemiddelde van twee getallen. In plaats van aparte functies voor int, float en double kan een templatefunctie gebruikt worden:
template <class T> T gemiddelde(T a, T b) { return (a+b) / 2; }
Deze functie kan vervolgens voor alle datatypen gebruikt worden die + en / ondersteunen.
[bewerk] Andere uitbreidingen
Andere toevoegingen zijn onder andere:
- een nieuwe commentaar-stijl voor een enkele regel (met "//");
- de mogelijkheid variabelen te declareren vlak voor gebruik;
- Naamruimten;
- Operator-overloading;
- Exception handling;
- inline functies (ook beschikbaar in de C99 standaard)
[bewerk] De C++ standaardbibliotheek en STL
De standaardbibliotheek bevat alle functionaliteit van C, met daarbij een verzameling templates: de Standard Template Library (STL). Dit zijn algemene templates voor het beheren van containers als vectors, lists en maps.
[bewerk] Geen superset van C
In tegenstelling tot wat vaak wordt beweerd, is C++ geen zuivere superset van C. Niet alle geldige C-code is automatisch geldige C++-code. De meeste C-code zal probleemloos als C++ gecompileerd worden, maar er zijn kleine verschillen.
Een andere programmeertaal, Objective-C, is wel een superset van C.
[bewerk] Compilers
Er zijn verschillende compilers beschikbaar, zowel gratis als commercieel. Een aantal bekende zijn:
- GNU GCC (Linux en vele ports naar andere besturingssystemen)
- Microsoft .NET (Windows)
- Intel C++-Compiler (Linux, Windows)
- Digital Mars (DOS, Windows)
- Borland C++-Compiler (Windows)
[bewerk] IDEs
- Visual Studio van Microsoft
- Dev-C++ Open source IDE met ingebouwde MinGW compiler. (Windows, Linux)
- Code::Blocks [1], een gratis C en C++ IDE (Windows, Linux) gebaseerd op wxWidgets.
- Eclipse, een Open source IDE, veel gebruikt voor Java, maar met goede ondersteuning voor C++ via de CDT plugin.
- Xcode 2.0 (MacOSX) IDE met o.a. ondersteuning voor C++ (bijv. met Carbon framework), en Objective C (bijv. met Cocoa framework).
[bewerk] Vergelijkbare talen
Andere object-georiënteerde talen die enigszins lijken op C++, zijn:
[bewerk] C++ voorbeelden
Een eenvoudig programma om "Hello World!" op het scherm te tonen, ziet er bijvoorbeeld zo uit:
#include <iostream> // Dit regelt de standaard in- en uitvoer binnen C++ using namespace std; // maakt namespace std bruikbaar zonder de std:: kwalificatie int main() // De uitvoering van het programma begint bij main() { // Schrijf "Hello World!" naar de standard output stream cout (in de namespace std::) cout << "Hello World!" << endl; // de 0 vertelt het besturingssysteem dat het programma succesvol beëindigd is return 0; }
Een eenvoudig voorbeeld van een C++-consoleprogramma dat standaard invoer accepteert en uitvoer op het scherm toont, ziet er als volgt uit:
#include <iostream> // voeg de I/O bibliotheek toe (voor std::cin en std::cout) #include <string> // voeg de string bibliotheek toe (voor std::string) // cin, cout en string zijn onderdeel van de std:: namespace. using namespace std; // maakt namespace std bruikbaar zonder de std:: kwalificatie int main() { // declareer twee strings en een integer string strNaam; string strVoornaam; int nLeeftijd; // vraag om voor- en achternaam cout << "Wat is uw voor- en achternaam? "; // ontvang invoer van de standaard input stream en plaats die in de variabelen strVoornaam en strNaam cin >> strVoornaam >> strNaam; // vraag om leeftijd cout << "Wat is uw leeftijd? "; // ontvang een regel van de standard input en zet die om naar een int cin >> nLeeftijd; // toon de ingevoerde gegevens cout << "Hallo " << strVoornaam << " " << strNaam << endl; cout << "U bent " << nLeeftijd << " jaar oud." << endl; // de 0 vertelt het besturingssysteem dat het programma succesvol beëindigd is return 0; }
Een voorbeeld van een C++-consoleprogramma dat de kracht van de STL-templates laat zien:
Met dit programma kun je een aantal getallen ingeven, die vervolgens na het ingeven van het eerste niet-getal gesorteerd zullen worden en op het console getoond.
#include <algorithm> #include <vector> #include <iostream> using namespace std; int main () { vector<int> v; istream_iterator<int> start (cin); istream_iterator<int> end; back_insert_iterator<vector<int> > dest (v); copy (start, end, dest); sort(v.begin(), v.end()); copy (v.begin(), v.end(), ostream_iterator<int>(cout, "\n")); }
[bewerk] Externe links
| Wikibooks heeft een programmeercursus over dit onderwerp: Programmeren in C++ |
| Overzicht van programmeertalen |
|---|
|
Industrieel: Ada · AWK · Assembler · C · C++ · C# · COBOL · F# · Fortran · J# · Java · JavaScript · Lisp · Object Pascal · Pascal · Perl · PHP · Python · Rexx · Visual Basic |

