C++

El Vikipedio, la libera enciklopedio
C++
Logobildo de C++
Logobildo de C++
objektema programlingvo • multparadigma programlingvo • proceda programlingvo • funkcia programlingvo • komuna programlingvo • programlingvo • liberforma programlingvo • tradukata programlingvo
Paradigmo: Multiparadigma:
Objektema, Ĝenerala, procedura programado
Paradigmo(j): objektema programado • funkcia programado • proceda programado • komuna programado • multparadigma programado
Aperis en: 1985
Aŭtoro(j): Stroustrup, Bjarne
Tipa sistemo: strikita, statika
Ĉefaj realigoj: Microsoft Visual C++, Borland C++ Builder, GNU C++
Programlingva(j) dialekto(j): ANSI C++ 1998 , ANSI C++ 2003
Kreita sub la influo de: C, Simula, Ada 83, ALGOL, CLU
Havas influon sur: Ĝavo, C#, Ada 95, D
vdr

C++ estas programlingvo inventita de Bjarne Stroustrup dum 1980-aj jaroj kiam li laboris en Bell Labs. Li intencis, ke ĝi estu objektema ido de C. Fakte, li unue nomis ĝin "C Kun Klasoj" (angle "C With Classes").

C++ estas preskaŭ plene kongrua kun C. C++-tradukilo ofte povas traduki C-programojn, kaj oni povas ligi kaj C-funkciojn kaj C++-funkciojn en unu programo.

C++ estas konsiderata kiel plurparadigma programlingvo, ĉar ĝi ebligas programi per pluraj stiloj, kiel ekzemple ordonema, datumtip-ĝenerala (metaprogramado), modulema kaj objektema programado.

C++ influis la kreadon aliajn lingvojn, ekzemple Java, C# kaj D. Tamen, el tiuj lingvoj, nur C++ subtenas multoblan heredadon (t.e. klaso povas heredi de pli ol unu patra klaso).

Dum 1990-aj jaroj, la programlingvo C++ ekestis unu el la plej uzataj programlingvoj. En 1998, la internacia organizo ISO normigis C++ kiel ISO/IEC 14882:1998. La nuna versio de tiu normo estas ISO/IEC 14882:2003, kiu nur korektis kaj klarigis plurajn detalojn de la programlingvo. Nuntempe, nova normo estas kreata, provizore nomata C++0x. C++0x ja aldonos plurajn esprimilojn al la programlingvo.

Filozofio

Bjarne Stroustrup projektis C++-on laŭ kelkaj reguloj, kiujn li klarigas en la libro The Design and Evolution of C++. Oni povas resumi la filozofion de C++ jene:

  • C++ estas projektita kiel statiko-tipigebla programlingvo, ĝeneralcela programlingvo, kiu estas tiel rapida kiel C.
  • C++ subtenas plurajn programparadigmojn.
  • En C++, la programisto povas libere elekti tion kion li preferas, eĉ se foje tio ebligas al li fari malbonan elekton.
  • C++ estas kongrua kun C, tiom kiom eblas.
  • C++ evitas platformspecifajn esprimilojn.
  • La esprimiloj, kiujn la programisto ne uzas, ne igas la programon pli malrapida (nek pli granda).
  • Oni povas uzi C++-on sen kompleksa programarmedio.

Esprimiloj prezentitaj en C++

C++ aldonis multajn esprimrimedojn al C. La plej konata estas klasoj, kiuj faciligas objekteman programadon. Per klasoj, oni povas aldoni funkciojn al datumstrukturoj, kaj igi tiujn strukturojn funkcii samkiel la simplaj datumtipoj de la lingvo.

Templates (ŝablonoj) estas la nomo de tre grava novaĵo prezentita de C++. Templates unue estis kreitaj simple por ebligi krei datumstrukturojn, kiuj povas enhavi ian ajn datumtipojn. Aliaj lingvoj, ekzemple Ada, jam antaŭe havis tian esprimilon. Poste, oni rimarkis ke oni povas uzi ŝablonojn por pluraj aliaj celoj dum la traduko de la programo. Ĉar ili ebligas kaj rekursion kaj decidojn, oni povas esprimi ian ajn komputon dum la traduko de la programo, tio estas, antaŭ la lanĉo de la tradukita programo. Tial, oni nomas tiun paradigmon metaprogramado.

Krome, C++ aldonis plurajn etajn plibonigojn al C, ekzemple: referencojn, homonimigon de funkcioj, komentojn kiuj komenciĝas per //, la tipon bool, operatorojn new kaj delete, ktp.

Ekzemplaj programoj

Tradicie, la unua programo, kiun oni lernas en ĵus ekkonita programlingvo, estas tre simpla programo, kiu nur montras la tekston "Saluton, mondo!" (angle: "Hello, world!") kaj finiĝas. Jen tiu programo skribita en C++:

#include <iostream> // por havigi std::cout

int main()
{
   std::cout << "Saluton, mondo!\n";
}

Oni ankaŭ povas skribi la saman programon tiel:

#include <ostream>
#include <iostream> // por havigi std::cout

int main()
{
   std::cout << "Saluton, mondo!\n";
   return 0;
}

La unua diferenco estas la linio #include <ostream>. Laŭ la normo de C++, ĝi estas necesa por havigi la operacisimbolon << kaj la enhavon de la klaso std::ostream, al kiu std::cout apartenas. Tamen, ĉiuj aŭ preskaŭ ĉiuj C++-tradukiloj ne devigas uzi #include <ostream>. Eĉ la kreinto de C++ jam iam diris ke la intenco estis ke nur #include <iostream> sufiĉus. Do, oni povas rigardi tiun aferon kiel difekton de la normo de C++, kiu eble estos korektita en nova normo.

La dua diferenco estas la linio return 0;. Tiu linio nur finas la programon, kun sukcesa kodo (0 signifas sukceson ĉi-okaze). La normo de C++ diras ke tiu linio estas aŭtomate aldonita al la funkcio main (nur al main) se oni ne uzas ĝin, sed iuj preferas uzi ĝin pro stilaj motivoj. Atentu ke la tipo de main devas esti ĉiam int, eĉ kiam oni ne uzas return 0;.

Eksteraj ligiloj