C++

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif

C++ är ett flerparadigm-programspråk med stöd för dataabstraktion, objektorienterad programmering och generisk programmering som ofta ger mycket snabba program. Språket utvecklades i början på 1980-talet av Bjarne Stroustrup vid Bell Labs. Idag är språket ett av de mest populära programspråken och används för programmering inom allt från spel till konsumentelektronik. C++ används i allt större utsträckning där C traditionellt har använts.

C++ är baserat på C och har anammat många begrepp och konstruktioner från det. Dock har man i C++ valt att stödja objektorienterad programmering genom att implementera bl.a. klassbegreppet. C++ omfattar inte C i strikt mening då det finns flera skillnader i semantik mellan C och den delmängd av C++ som motsvarar C.

Innehåll

Översikt

Språkets syntax bygger på C men har utökats för att stödja fler programmeringsparadigmer. Även om syntaxen i C++ påminner starkt om den i C är programmen ofta uppbyggda på annorlunda sätt.

För att stödja objektorienterad programmering implementerades klassbegreppet genom att utöka syntaxen för strukturer och tillåta både funktioner och data att vara medlemmar i en struktur. Språket har dessutom stöd för konstruktorer, destruktorer, arv, virtuella funktioner samt överlagring av operatorer.

En kraftfull sida hos C++ är templates. Dessa är en syntax som möjliggör återanvändning av samma kod men för olika datatyper. Precis som man brukar undvika att hårdkoda data i sin kod kan man använda templates för att undvika att hårdkoda datatyper. Templates kan göras mycket avancerade, till den grad att det finns hela böcker om ämnet. Det finns ett antal templates i standardbiblioketet, till exempel listor, köer och tabeller med olika egenskaper.

Typsystemet är mer stringent än för C och förbjuder åtskilliga av de implicita typkonverteringar som C tillåter. Som exempel kan nämnas att konverteringen från void * till andra pekartyper är förbjuden i C++ men tillåten i C.

Historia

Stroustrup påbörjade sitt arbete med språket 1979, inspirerad av bland annat Simula-67 och FORTRAN 77, och det började användas inom AT&T i augusti 1983.[källa behövs] Den ursprungliga kompilatorn kallades "CFront" och var en förkompilator till C som genererade C-kod.[källa behövs] Den första kommersiellt tillgängliga kompilatorn kom oktober 1985.[källa behövs] En internationell standardisering av C++ kom 1998 (ISO/IEC 14882-1998).[källa behövs] Denna standard, vilken uppdaterades år 2003 och som gäller än idag, kommer dock ersättas av en ny, som för tillfället har arbetsnamnet C++0x.

Kodexempel

Hello World

Exempelkod för Hello World, som Bjarne Stroustrup presenterar i sin bok The C++ Programming Language:[1]

#include <iostream>
 
int main()
{
   std::cout << "Hello World!\n";
}

I/O och sortering

Programmet läser in en serie tal från standardinmatningen, sorterar dem, och skriver ut dem via standardutmatningen.

#include <iostream>
#include <vector>
#include <algorithm>
 
// Definiera Vector som ett alternativt namn för std::vector<int>
typedef std::vector<int> Vector;
 
int main()
{
   Vector vektor;
   int tal;
 
   // Läs in ett nytt värde i "tal" tills det inte finns fler värden att läsa
   while(std::cin >> tal)       
   {
      // Lägg varje värde sist i "vektor".
      vektor.push_back(tal);
   }
 
   // Sortera värdena i vektorn.
   std::sort(vektor.begin(), vektor.end());
 
   // Skriv ut alla värden som lästes in i vektorn.
   for (Vector::const_iterator i = vektor.begin(); i != vektor.end(); ++i)
   {
      std::cout << *i << std::endl;
   }
 
   return 0;
}

Grafisk programmering

C++ innehåller inget grafiskt bibliotek då standarden är menad att vara portabel och ej bunden till en specifik plattform. Däremot finns det ett flertal tilläggsbibliotek som kan användas för att utveckla exempelvis grafiska användargränssnitt.

I Microsoft Windows är det möjligt att programmera direkt i Win32-API:t, vilket är ett gränssnitt direkt mot operativsystemet. Detta ger dock av naturliga skäl icke portabel kod. Dessutom består det till stor del av C-funktioner och -strukturer och inte av C++. Klassbiblioteket MFC (Microsoft Foundation Class Library) är ett bibliotek vilket är tänkt att kapsla in dessa funktioner i C++-klasser.

Direct X brukar ofta förknippas med C++ och är ett spelutvecklingsbibliotek utgivet av Microsoft. Det har en direkt koppling till Win32-API:t i form av att många basoperationer för fönster fortfarande sker genom det.

SDL (Simple DirectMedia Layer) är ett API för grafik som är ganska lätt att använda. Det har inte lika många funktioner som Direct X och Win32-API:t men det tenderar att gå snabbare att programmera i och ger till skillnad från de tidigare nämnda alternativen portabel kod.

Noter

  1. Stroustrup, Bjarne. ”Open Issues for the C++ Programming Language (3rd edition)”. http://www.research.att.com/~bs/3rd_issues.html. , errata för sid 633, där frågan om std::endl diskuteras.

Externa länkar

Personliga verktyg