C++

Fra Wikipedia, den frie encyklopædi
Gå til: navigation, søg
Acap.svg Indforstået sprog
Denne artikel er skrevet i et meget indforstået sprog. Du kan gøre artiklen bedre ved at omskrive den i et sprog, der er lettere at forstå for folk uden forudgående viden om emnet.

C++ (udtales C plus plus) er et multiparadigmatisk programmeringssprog baseret på C, med hvilket det fastholder næsten fuldstændig kompatibilitet. C++ er udviklet primært af Bjarne Stroustrup.

Historie[redigér | redigér wikikode]

C++ blev oprindeligt 'opfundet' af danskeren Bjarne Stroustrup i begyndelsen af 1980'erne (oprindelig kaldt C with Classes) og blev i løbet af en årrække et af de mest populære programmeringssprog nogensinde.

I dag er C++ særligt populært inden for computerspilsudvikling og andre steder, hvor man udvikler programmer, der kræver et højniveausprog og høj hastighed samtidig.

Den første C++-kompiler hed CFRONT og oversatte C++-kode til maskinafhængig C-kode. Det regnedes for en rigtig compiler, da den i modsætning til præprocessorer udførte fuld syntaktisk og semantisk tjek af kildekoden.

Objektorienterede egenskaber[redigér | redigér wikikode]

C++'s objektorienterede syntaks er primært inspireret af Simula. Det andet C-baserede programmeringssprog, Objective-C, der konkurrerer med C++, får sin OOP-syntaks andetsteds fra. C++ er også inspireret af ALGOL 68, Ada, CLU og ML. Sprog som Java og C# er inspireret af C++ og får mange af deres features samt syntaks herfra.

C++ er standardiseret, både af ISO og ANSI.

"Hello World!"-eksempel i C++[redigér | redigér wikikode]

#include <iostream>
class hello
{
};
 
std::ostream& operator<< (std::ostream& o, const hello&)
{
    return o << "Hej verden";
}
 
int main()
{ 
    hello h;
    std::cout << h << std::endl;
    return 0;
}

Hello World-programmet kan skrives på mange måder i C++. Det ovenstående eksempel er et der forsøger at illustrere brugen af klasser og streams.

Et mere klassisk (C-lignende) Hello World-program:

#include <iostream>
 
using namespace std;
 
int main()
{ 
    cout << "Hello World!" << endl; 
    return 0;
}

Kompatibilitet med C[redigér | redigér wikikode]

Da Bjarne Stroustrup udviklede C++, lagde han stor vægt på, at C++ skulle fungere som en udvidelse til C. Af denne grund er alle basale features identiske med C, fx operatorancinitet. Dette gør det muligt at kompilere C-kode med en C++-kompiler, hvilket gør, at det er nemt løbende at porte et C-projekt til C++. Et problem er dog at nogle implicitte konverteringsregler er ændret. I C er følgende udtryk tilladt:

int* i = malloc(sizeof(int) * 5); /* Implicit konvertering fra void* til int* */

I C++ kræver en sådan konvertering et explicit cast:

int* i = (int* ) malloc(sizeof(int) * 5);

Standardbibliotek[redigér | redigér wikikode]

Standardbiblioteket i C++ er forholdsvis lille. F.eks. indeholder det ikke faciliteter til flertrådning, grafiske brugergrænseflader eller netværk. Det forventes, at brugeren vælger nogle passende biblioteker til at supplere med disse faciliteter, som f.eks. Nokias Qt.

Standardbiblioteket indeholder Standard Template Library (STL). STL indeholder en række klassedefinitioner, templates samt funktioner, der tilsammen implementerer de mest almindelige programmeringsopgaver, såsom sortering, søgning, tekstmanipulation, filhåndtering og andre lignende. Dette bibliotek er sammen med sproget for tiden i gang med en større revision, hvor bl.a. dele af Boost-biblioteket sandsynligvis vil blive inkluderet. Den nye C++-revision hedder C++11.

Derudover indeholder C++ hele standardbiblioteket fra C.

Det er meget almindeligt at blande C++-kode med C-biblioteker, hvilket gør den store mængde af C-biblioteker tilgængelige.