C++: berrikuspenen arteko aldeak

Ezabatutako edukia Gehitutako edukia
Ksarasola (eztabaida | ekarpenak)
ikus, gainera
No edit summary
1. lerroa:
{{Programazio lengoaia infotaula
'''C++''' [[programazio-lengoaia|programazio lengoaia]] bat da, [[C (programazio lengoaia)|C programazio lengoaiaren]] luzapen gisa [[Bjarne Stroustrup]]ek 80. hamarkadan diseinatutakoa.
| izena = C++
| logoa = ISO C++ Logo.svg
| paradigma = [[Multiparadigma programazio lengoaia]], [[Objektuetara bideratutako programazioa]], [[Programazio inperatibo]]
| familia =
| diseinatzailea = Bjarne Stroustrup
| garatzailea = Bjarne Stroustrup, [[Bell Laborategiak]]
| agerpena = [[1983]]
| kaleratze egonkorra = ISO/IEC 14882:2017 (C++17)
| kaleratze ezegonkorra = C++20
| idazketa =
| esparrua =
| programazio lengoaia =
| garapen etena =
| plataforma =
| sistema eragilea = [[Multiplataforma]]
| lizentzia =
| luzapena = <code>.h .hh .hpp .hxx .h++ .cc .cpp .cxx .c++</code>
| formatua =
| webgunea =
| inplementazioak = C++ Builder, clang, Comeau C/C++, [[GNU Compiler Collection|GCC]], Intel C++ Compiler, Microsoft Visual C++, Sun Studio, Code::Blocks, Zinjai
| dialektoak = [[ISO/IEC 14882|ISO/IEC C++]] 1998, [[ISO/IEC 14882|ISO/IEC C++]] 2003, [[ISO/IEC 14882|ISO/IEC C++]] 2011
| eragina = [[C programazio lengoaia|C]], Simula, [[Ada (programazio lengoaia)]], [[ALGOL|ALGOL 68]], CLU, ML<ref name="stroustruptcpppl">{{Erreferentzia|hizkuntza=en|izenburua=The C++ Programming Language|urtea=1997|abizena=Stroustrup|izena=Bjarne|ISBN=0201889544|bertsioa=Third}}</ref>
| eragindua = [[Perl]]<!--1987-->, LPC<!--1989-->, [[Lua]]<!--1993-->, Pike<!-- 1994 -->, [[Ada (programazio lengoaia)|Ada 95]]<!--1995-->, [[Java (programazio lengoaia)|Java]]<!--1995-->, [[PHP]]<!--1995-->, D<!--1999-->, C99<!--1999-->, [[C Sharp|C#]]<!--2001-->, Falcon<!--2003-->
}}
 
'''C++''' 1979an [[Bjarne Stroustrup]]-ek diseinatutako [[Programazio-lengoaia|programazio lengoaia]] bat da. [[Objektu (informatika)|Objektuen]] manipulazioa ahalbidetzen duten mekanismoak [[C (programazio lengoaia)|C]] programazio lengoaiara zabaltzea izan zen haren sorkuntzaren asmoa. Zentzu horretan, [[Objektuetara bideratutako programazioa|objektuetara bideratutako lengoaien]] ikuspegitik, C++ lengoaia hibridoa da.
[[konpilazio|Konpilatu]] daitekeen lengoaia hibridoa da, C programazio lengoaia ezagutzen dutenentzako ikastea oso erraza suertatzen dena. [[Estandar (argipena)|Estandar]] bat ere badago, ISO C++ deritzona. Ezaugarri nagusiak dira abstrakzioa, [[objektuei orientatutako programazio]]rako gaitasuna eta txantiloiak erabiltzeko gaitasuna.
 
Ondoren, programazio generikoaren erraztasunak gehitu ziren, eta horiek programazio egituratuaren paradigmei eta [[Objektuetara bideratutako programazioa|objektuetara bideratutako programazioari]] gehitu zitzaizkien. Horregatik esan ohi da C++ programazio lengoaia multiparadigma bat dela.
 
Gaur egun, ISO C++ izeneko estandar bat dago, eta horri atxiki zaizkio konpiladore modernoenen fabrikatzaile gehienak. Badira interprete batzuk ere, ROOT kasu.
 
== Historia ==
[[Fitxategi:BjarneStroustrup.jpg|thumb|[[Bjarne Stroustrup]], C++ lengoaiaren sortzailea]]
1979an, [[Bjarne Stroustrup]] [[informatikari]] daniarra C++ lengoaiaren aurretikoa den "''C with Classes''" proiektuarekin lanean hasi zen. Programazio-lengoaia berri bat sortzeko motibazioa Stroustrup-i bere doktore-tesian programazioan izandako esperientziatik sortu zitzaion. Stroustrup ohartu zen Simulak bazituela tamaina handiko softwarea garatzeko oso baliagarriak ziren ezaugarriak, baina lengoaia motelegia zela erabilera praktikorako; BCPL, aldiz, azkarra zen baina maila baxuegikoa tamaina handiko softwarea garatzeko egokia izateko. Stroustrup [[Bell Laborategiak|AT&T Bell Labs]]-en lanean hasi zenean, [[Unix|Unixen]] [[Nukleo (informatika)|kernela]] aztertzen aritu zen, [[Konputazio banatua|konputazio banatuari]] dagokionez. Bere doktorego esperientzia gogoratuz, Stroustrupek [[C (programazio lengoaia)|C]] lengoaia hobetzea proposatu zuen Simularen antzeko ezaugarriekin. C aukeratu zen, erabilera orokorrekoa, azkarra, eramangarria eta oso erabilia zelako. C eta Simula programazio-lengoaien eragina izateaz gain, beste hainbat lengoaiak ere izan zuten eragina lengoaia berrian, [[ALGOL]] 68, [[Ada (programazio lengoaia)|Ada]], CLU eta ML barne.
 
Hasiera batean, C-ren Cpre [[Konpiladore|konpiladoreari]] hainbat ezaugarri gehitu zitzaizkion Stroustrup-en ''"C with Classes"'' lengoaiarako: klaseak, klase eratorriak, datu-moten erabilera zurruna, i''nline expansion'' eta argumentu lehenetsien erabilera, besteak beste.
'''C++''' goi-mailako ([[lengoaia sinboliko]]a edo [[hirugarren belaunaldiko lengoaia]]) programazio lengoaia da, [[1980ko hamarkada]]ren erdian, [[Bjarne Stroustrup]]ek diseinatua, [[C (programazio lengoaia)|C lengoaiaren]] garapen moduan.
 
1982an hasi zen Stroustrup "''C with Classes''"-en ondorengo izango zen programazio-lengoaia garatzen, eta hasiera batean beste izen batzuk erabili bazituen ere, azkenean "C++" izena jarri zion ( <code>++</code> ikurra inkrementu- edo gehikuntza-eragilea da C programazio-lengoaian). Ezaugarri berriak gehitu zizkion: funtzio birtualak, erreferentziak, konstanteak, datu-moten kontrol hobetua, iruzkinak lerro bakarrean egiteko bi barra ( <code>//</code>) erabiltzea BCPL lengoaian bezala, etab. Gainera, C++ -erako konpiladore independente berri bat garatu zuen: Cfront.
C++ izena [[Rick Masciatti]]k proposatu zuen [[1983]]an; aurretik, ''C klaseekin'' izena eman zioten. ''Gehi gehi'' (++) horrek gehikuntza eragile batarrari erreferentzia egiten dio, eta lengoaiaren jatorria eta hobekuntzari.
 
1985ean C++ programazio-lengoaiaren (''The C++ Programming Language''<ref>{{Erreferentzia|abizena=Stroustrup, Bjarne.|izenburua=The C++ programming language|argitaletxea=Addison-Wesley|data=1986|url=https://www.worldcat.org/oclc/12551884|isbn=020112078X|pmc=12551884|sartze-data=2019-10-21}}</ref>) lehen edizioa argitaratu zen. Garai hartan oraindik estandar ofizialik ez zegoenez, bertsio hura lengoaiarako erreferentzia bihurtu zen. Lehen inplementazio komertziala urte bereko urrian argitaratu zen.
== Ezaugarriak ==
 
2018an Stroustrupek ''Charles Stark Draper Prize''<ref>{{Erreferentzia|izenburua=Charles Stark Draper Prize for Engineering|url=https://nae.edu/20681/DraperPrize|aldizkaria=NAE Website|sartze-data=2019-10-21}}</ref> saria jaso zuen "C++ programazio-lengoaia kontzeptualizatu eta garatzeagatik".
Bere ezaugarri nagusiak honako hauek dira egilearen ustetan:
* ''[[C (programazio lengoaia)|C]] hobe bat da''
* Datuen abstrakzioa (kapsulagarritasuna) jasaten du.
* [[Programazio generiko]]a (txantiloiak - ingelesez template kontzeptua -) jasaten du.
* [[Objektuei orientatutako programazio]]a (eta beraz, [[polimorfismoa]]) jasaten du.
 
2019an programazio-lengoaia zabalduenen artean laugarren postuan dago C++, [[Java (programazio lengoaia)|Javaren]], Cren eta [[Python (informatika)|Pythonen]] atzetik.
Gaur egun '''ISO''' ([[International Organization for Standardization]]) estandarra (ISO/IEC 14882:1998) da. Jende askoren ustetan C++ potentzia gehien duen programazio lengoaia da, goi eta behe mailetan lan egitea jasaten baitu. Bestalde, automatismo gutxien dakarrena ere bada, horren ondorioz, beharrezkoa den gehiena norberak egin behar du.
 
<br />
== Sintaxia ==
 
[[Kaixo mundua]] adibidea:
=== Etimologia ===
Stroustrupen arabera, "C++ izenak C-ren aldaketen izaera ebolutiboa adierazten du". Izen hori Rick Mascitti-k eman zion 1983an eta orduan hasi zen erabiltzen lehen aldiz. C programazio-lengoaian erabiltzen den <code>++</code> inkrementu- edo gehikuntza-eragiletik dator ([[Aldagai (matematika)|aldagai]] baten balioaren inkrementua). Gainera, "+" ikurrarekin lengoaia areagotu edo hobetu dela adierazi nahi izan zen.
 
C++ lengoaiaren garapenak iraun zuen bitartean, ''"new C"'' (C berria) eta ''"C with Classes"'' (C klaseekin) izenak ere erabili ziren hura izendatzeko.
 
=== Estandarizazioa ===
 
{| class="wikitable" style="float:right; margin-left: 10px;"
|+
|'''Urtea'''
|'''C++ Estandarra'''
|'''Izen informala'''
|-
|'''1998'''
|ISO/IEC 14882:1998<ref>{{Erreferentzia|abizena=14:00-17:00|izenburua=ISO/IEC 14882:1998|hizkuntza=en|url=http://www.iso.org/cms/render/live/en/sites/isoorg/contents/data/standard/02/58/25845.html|aldizkaria=ISO|sartze-data=2019-11-02}}</ref>
|C++98
|-
|'''2003'''
|ISO/IEC 14882:2003<ref>{{Erreferentzia|abizena=14:00-17:00|izenburua=ISO/IEC 14882:2003|hizkuntza=en|url=http://www.iso.org/cms/render/live/en/sites/isoorg/contents/data/standard/03/81/38110.html|aldizkaria=ISO|sartze-data=2019-11-02}}</ref>
|C++03
|-
|'''2011'''
|ISO/IEC 14882:2011<ref>{{Erreferentzia|abizena=14:00-17:00|izenburua=ISO/IEC 14882:2011|hizkuntza=en|url=http://www.iso.org/cms/render/live/en/sites/isoorg/contents/data/standard/05/03/50372.html|aldizkaria=ISO|sartze-data=2019-11-02}}</ref>
|C++11, C++0x
|-
|'''2014'''
|ISO/IEC 14882:2014<ref>{{Erreferentzia|abizena=14:00-17:00|izenburua=ISO/IEC 14882:2014|hizkuntza=en|url=http://www.iso.org/cms/render/live/en/sites/isoorg/contents/data/standard/06/40/64029.html|aldizkaria=ISO|sartze-data=2019-11-02}}</ref>
|C++14, C++1y
|-
|'''2017'''
|ISO/IEC 14882:2017<ref>{{Erreferentzia|abizena=14:00-17:00|izenburua=ISO/IEC 14882:2017|hizkuntza=en|url=http://www.iso.org/cms/render/live/en/sites/isoorg/contents/data/standard/06/85/68564.html|aldizkaria=ISO|sartze-data=2019-11-02}}</ref>
|C++17, C++1z
|-
|'''2020'''
|Oraindik zehazteko
|C++20, C++2a
|}
 
JTC1/SC22/WG21 izenez ezagutzen den [[ISO]] lantaldeak estandarizatzen du C++. Orain arte, C++ estandarraren bost berrikuspen argitaratu ditu
 
1998an sortu zuen lehen C++ estandarra ISO lantaldeak. Modu informalean C++98 izenez ezagutzen da lehen estandar hori (''ISO/IEC 14882:1998''). 2003an argitaratu zuten C++ estandarraren bertsio berria (''ISO/IEC 14882:2003'') , C++98 bertsioan identifikatutako arazoak konpontzen zituena.
 
Estandarraren hurrengo berrikuspen nagusia ''"C++0x"'' izenez izendatua izan zen modu informalean, baina 2011ra arte ez zen argitaratua izan. ''C++11 bertsioak'' lengoaian bertan eta liburutegi estandarrean gehikuntza asko jaso zituen.
 
2014ean C++14 (edo informalki ''C++1y'') argitaratu zen. Funtsean aurreko ''C++11'' estandarraren hedapen txiki bat zen; akatsen zuzenketak eta hobekuntza txikiak jaso zituen.
 
2017an beste berrikuspen nagusi bat argitaratu zen, C++17 (edo informalki ''C++1z'').
 
Gaur egun, hurrengo berrikuspena izango den C++20rekin ari da lanean ISO lantaldea.
 
== Ezaugarriak<ref>{{Erreferentzia|abizena=Goirizelaia Ordorika, Iñaki.|izenburua=Programazioaren oinarriak|argitaletxea=Euskal Herriko Unibertsitatea = Universidad del País Vasco|data=D.L. 2000|url=http://worldcat.org/oclc/434128460|isbn=84-7585-673-X|pmc=434128460|sartze-data=2019-11-24}}</ref>==
 
=== Sarrera/Irteera funtzioak ===
C++ lengoaian badago aukera C lengoaiako <code>printf</code> eta <code>scanf</code> funtzioak erabiltzeko, baina horiez gain, beste bi funtzio daude: <code>cin</code> datuen sarrerako funtzioa eta <code>cout</code> irteerarako funtzioa. Adibidez:<syntaxhighlight lang="c++">
cin >> balio; // Honela balio aldagaiari datu bat ematen zaio.
cout << "Honela balio aldagaiaren edukia bistaratzen da" << balio << "\n";
</syntaxhighlight>
 
=== Identifikatzaileak ===
Datu-mota ezberdinak prozesatu ahal izateko, izenak jarri behar zaizkie. Horretarako, identifikatzaileak daude. Hauek, aldagaiei eta funtzioei ematen zaizkien izenak dira. Identifikatzaileak definitzeko, karaktere alfabetikoak (A-tik Z-ra, maiuskulak zein minuskulak), zenbakiak (0-9) eta '''<code>_</code>''' karaktere berezia erabil daitezke. Konpilatzerakoan, identifikatzailearen lehen 31 karaktereak irakurriko dira eta hasierakoa derrigorrez karaktere alfabetikoa edo <code>_</code> izan behar du.
 
=== Datu-motak ===
 
==== Zenbaki osoak ====
Zenbaki osoetarako, <code>int</code> datu-mota erabiltzen da. Zeinurik gabeko zenbakiak gordetzeko memoriako bi byte erabiltzen dira. Hitz gakoa <code>unsigned int</code> da eta 0 / 65535 tartean daude. Zeinudun zenbaki laburrak gordetzeko bi byte behar dira, <code>short int</code> erabiltzen da eta -32.768 / 32767 tartean daude. Azkenik, zeinudun zenbaki luzeak daude, lau byte behar dituztenak, <code>long int</code> hitz gakoa dutenak eta -2.147.438.648 / 2.147.483.647 tartean daudenak. Adibidez:<syntaxhighlight lang="c++">
int aldagaia = 680;
</syntaxhighlight>
 
==== Zenbaki errealak ====
Zenbaki errealek koma higikorrezko formatua erabiltzen dute.
 
<code>float</code> motakoek 7 hamartar dituzte, 4 byte behar dituzte eta horietatik 8 dira berretzailea adierazteko eta 24 mantisarako.
 
<code>double</code> motakoek 15 hamartar dituzte eta 8 byte behar dituzte.
 
<code>long double</code> motakoak ere definitu daitezke eta 10 byte behar dituzte.
 
Adibidez:<syntaxhighlight lang="c++">
float aldagaia = 6.63e-23;
</syntaxhighlight>
 
==== Karaktereak ====
Datu-mota honek 0-255 tarteko zeinurik gabeko zenbaki oso bat definitzen du, byte batean gordetzen da eta gehienetan ASCII kodigoa erabiltzen da zenbakiak karaktere bihurtzeko. <code>char</code> bidez deklaratzen dira. Adibidez:<syntaxhighlight lang="c++">
char aldagaia = 'X';
</syntaxhighlight>
 
==== Konstanteak ====
Konstanteak definitzeko, <code>const</code> datu-mota erabiltzen da. Derrigorrezkoa da hasieratzea eta bere balioa aldatzen ahaleginduz gero, konpiladoreak errorea emango du. Adibide bat:<syntaxhighlight lang="c++">
const double PI = 3.1415926;
</syntaxhighlight>
 
==== Array ====
Array motako aldagaiak askotan erabiltzen dira, aldagai hauek datu mota asko gordetzeko balio dute eta matrize kontzeptuarekin erlazio handia dute.
 
===== Deklarazioa =====
Array motako aldagaiak definitzeko osagaien datu mota, array-aren izena eta osagaien kopurua finkatu behar da, horretarako <code>[]</code> erabiltzen da eta zenbateko tamaina duen kortxeteen artean zehazten da. Array-ak edozein aldagai motakoak izan daitezke. Deklarazio adibidea:<syntaxhighlight lang="c++">
int aldagaiak[5]; // "aldagaiak" izeneko Array horretan int motako 5 elementu daude
</syntaxhighlight>Aldagai mota hauetan zenbaki guztiak identifikatu ahal izateko ''[[indize]]'' izeneko zenbaki bat erabiltzen da, derrigorrez zenbaki osoa izan behar duena. Kontuan izan behar duguna da, lehenengo indizearen balioa 0 dela.
{| class="wikitable"
|+0.ind |0 indizea | 1 indizea | 2 indizea | 3 indizea | 4 indizea
!aldagai 1
!aldagai 2
!aldagai 3
!aldagai 4
!aldagai 5
|}
Adierazpen grafiakoan adierazten den moduan, aldagaiak 5 elementu izan arren array-aren indize handiena 4 da, 0 indizetik hasten baita.
 
===== Hasieraketa =====
Array-ak hasieratzeko garaian beste aldagaiekin egiten den bezala, bere barneko elementu bakoitzari balio zehatz bat ezartzeko aukera ematen du. Horretarako, balioak <code>,</code> bitartez banandu behar dira elkarrengandik eta balio guzti horiek giltza (<code>[]</code>) tartean sartu behar dira.<syntaxhighlight lang="c++">
int aldagaiak[5] = {7,5,6,15,20};
</syntaxhighlight>
 
===== Array dimentsioaniztunak =====
Array motako aldagaiak dimentsioaniztunak izan daitezke. Array dimentsioaniztunak, azken finean, matrizeak dira. Bidimentsionalak direnak 2D-ko matrizeak osatzen dituzte eta tridimentsionalak berriz 3D-ko matrizeak. Array bidimentsionalen deklarazio egitura, dimentsio bakarrekoen antzekoa da, baina ez berdina.
 
Bidimentsionalak:<syntaxhighlight lang="c++">
int aldagaiak [dimentsio 1][dimentsio 2];
</syntaxhighlight>Tridimentsionalak:<syntaxhighlight lang="c++">
int aldagaiak [dimentsio 1][dimentsio 2][dimentsio 3];
</syntaxhighlight>
 
=== Kontrol egiturak ===
 
==== Baldintzapeko egiturak ====
C++ lengoaiak bi baldintzapeko egitura eskaintzen ditu: <code>if</code> eta <code>switch</code>.
 
===== IF egitura =====
Egitura edo sententzia hau edozein lengoaiatan dago eta C++ lengoaian ezaugarri orokorrak mantentzen ditu, hau da, espresio logiko bat ebaluatzen da eta emaitza egia bada, espresioa exekutatzen da.
 
Bi sintaxi aukera posible daude:<syntaxhighlight lang="c++">
if(baldin-espresioa) espresioa;
</syntaxhighlight>eta<syntaxhighlight lang="c++">
if(baldin-espresioa)
{
espresioa;
}
</syntaxhighlight>Egitura hauetan, baldintza egia denean espresioa exekutatuko da, baina gezurra denean ez da ezer gertatuko. <code>if else</code> egiturak aukera ematen du baldintza gezurra denean beste espresio batzuk exekutatzeko:<syntaxhighlight lang="c++">
if(baldin-espresioa)
{
espresioa1;
}
else
{
espresioa2;
}
</syntaxhighlight>
 
===== SWITCH egitura =====
Baldintzazko egitura honen bidez, aukera desberdin batzuen artean bat hartzen da eta horri dagokiona exekutatzen da. Aukera bakoitza <code>case</code> hitz-gakoaz hasten da. Hona hemen egitura:<syntaxhighlight lang="c++">
switch(aukera-aldagaia)
{
case 'balio1': espresioak;
break;
case 'balio2': espresioak;
break;
case 'balioN': espresioak;
break;
}
</syntaxhighlight><code>switch</code> hitz-gakoaren atzetik datorren aldagaia derrigorrez osoa (<code>int</code>) edo karakterea (<code>char</code>) izan behar da. <code>break</code> sententzia <code>switch</code> sententziatik irteteko erabiltzen da.
 
==== Iterazio-egiturak ====
C++ lengoaiak hiru baldintzapeko egitura eskaintzen ditu: <code>for</code>, <code>while</code> eta <code>do while</code>.
 
===== FOR egitura =====
Ezaguna bada aldez aurretik espresio bat zenbat bider exekutatu behar den edo eta baldintza baten balioaren arabera errepikatu behar bada, <code>for</code> egitura erabili ohi da. Ondorengoa da egitura:<syntaxhighlight lang="c++">
for(hasierako-espresioa; baldintzazko-espresioa; eguneraketa-espresioa)
{
espresioa;
}
</syntaxhighlight>
 
===== WHILE egitura =====
Egitura errepikakor orokorrenetarikoa da. Kontrol-egituraren barnean idazten dugun baldintza egia den bitartean, gorputzaren espresioak errepikatzen dira. Ondorengoa da egitura:<syntaxhighlight lang="c++">
while(baldin-espresioa)
{
espresioak;
}
</syntaxhighlight>
 
===== DO WHILE egitura =====
<code>while</code> egituran, gorputzeko espresioak bakarrik exekutatzen dira baldintzako espresioa egia bada. <code>do while</code> egituran espresioa gutxienez behin burutuko da, baldintzazko espresioa begiztaren irteeran dagoelako. Ondorengoa da egitura:<syntaxhighlight lang="c++">
do{
espresioak;
}
while(baldin-espresioa);
</syntaxhighlight>
 
=== Funtzioak ===
Funtzioek programetan lan konkretu bat egiteko erabiltzen dira. Normalki, programa nagusiak funtzioz osatuta daude eta bata bestearen atzetik deitzen dira programaren helburua lortzeko. Funtzioen helburuak gauzatzeko, normalki behar duten informazioa parametroen bidez ematen zaie. C++ lengoaiak funtzioei parametroak emateko era desberdinak ditu. Ondoren hiru moduetako bakoitzaren adibide bat.
 
==== Balorea pasatzea ====
<syntaxhighlight lang="c++">
void funtzioa(int param) //Funtzioaren prototipoa
#include <iostream>
void main(void)
int main()
{
int balioa = 98;
std::cout << "Kaixo, mundua!\n";
funtzioa(balioa); //Funtzioaren deia
}
void funtzioa(int param) //Funtzioaren definizioa
{
printf("%d\n", param);
param = 67;
}
</syntaxhighlight>
 
==== Helbidea pasatzea ====
{{commonskat}}
<syntaxhighlight lang="c++">
void elkartrukatu(int *x_ptr, int *y_ptr);
void main(void)
{
int x = 4;
int y = 12;
printf("Elkartrukatu baino lehenago: x = %d, y = %d\n", x, y);
elkartrukatu(&x, &y);
printf("Elkartrukatu eta gero: x = %d, y = %d\n", x, y);
}
void elkartrukatu(int *x_ptr, int *y_ptr)
{
int laguntza;
laguntza = *x_ptr;
*x_ptr = *y_ptr;
*y_ptr = laguntza;
}
</syntaxhighlight>
 
==== Ikus,Erreferentzia gainerapasatzea ====
<syntaxhighlight lang="c++">
void elkartrukatu(int &x, int &y);
void main(void)
{
int x = 4;
int y = 12;
printf("Elkartrukatu baino lehenago: x = %d, y = %d\n", x, y);
elkartrukatu(x, y);
printf("Elkartrukatu eta gero: x = %d, y = %d\n", x, y);
}
void elkartrukatu(int &x, int &y)
{
int laguntza;
laguntza = x;
x = y;
y = laguntza;
}
</syntaxhighlight>Kontuan hartu behar da arrayak pasatzeko erabili beharreko metodoa ''helbidea'' ''pasatzea'' dela.
 
=== Erabilera<ref>{{Erreferentzia|izenburua=The Programming Languages Beacon|url=https://www.mentofacturing.com/vincent/implementations.html|aldizkaria=www.mentofacturing.com|sartze-data=2019-11-28}}</ref>===
* [[Programazio-lengoaia]]
C++ lengoaia, leku eta enpresa handi gehienek erabili ohi dute. Gehienbat grafikoetan bereizten da objektuei orientatuta baitago; mahaigaineko inguruneetarako, [[Web nabigatzaile|nabigatzaileetarako]] eta multimedia aplikazioetarakota, batik bat.
* [[C (programazio lengoaia)|C]]
 
* [[C#]]
Sistema eragileei dagokienez, [[Microsoft Windows]], [[Chome OS]] eta [[Apple MacOS]] dira aipagarrienak. Mundu grafikoan ere oso erabilia da, hala nola, [[GNOME|Gnome]] eta [[KDE]]. ''Office'' paketeen inguruan, [[Microsoft Office]] eta [[LibreOffice]] aipa ditzazkegu. Azkenik, kopiladore/interpretekin amaituko dugu, hauen oinarrian C++ lengoaiarekin topa gintezkelako; Esate baterako, Microsoft Visual C++/Basic eta [[GCC|gcc]](GNU Compiler Colection).
* [[BASIC]]
 
* Visual C.NET
=== Sintaxia ===
* Visual Basic.NET
C++ lengoaian, beste hainbat lengoaietan bezala, <code>//</code> erabiltzen da iruzkinak egiteko. Azpimarratu beharra dago, bi barra hauetatik eskuinetara idatzitako dena konpiladoreak ez duela kontuan hartuko. Beraz, nahi dena idatz daiteke. Baina metodo hau lerro bakarreko iruzkinak egiteko bakarrik da baliogarria. Hainbat lerrotako iruzkinetarako, <code>/*</code>-rekin hasi eta <code>*/</code> -rekin amaitu behar da. Hona hemen adibide bat:<syntaxhighlight lang="c++">
* [[.NET|.NET Framework]]
// Hau lerro bakarreko iruzkina da
* Visual Studio.NET
 
* ASP.NET
/* Hau haibat
* [[ADO.NET]]
lerrotako
* [[CLR]]
iruzkina da*/
* .NET Show
</syntaxhighlight>Beste kontuan hartu beharreko gauza bat, lerro bakoitza nola amaitu da. Beste ia lengoaia guztien moduan, C++ lengoaian <code>;</code> sinboloa erabiltzen da agindu bati amaiera emateko. Adibidez:<syntaxhighlight lang="c++">
* [[.NET]]
cout<<"kaixo";
* [[Oinarri Klase Liburutegi|.NET oinarri klase liburutegia]]
</syntaxhighlight>Ildo beretik jarraituz, ''Sartu'' teklaren baliokidea programazio lengoaia honetan <code>\n</code> da. Hau da, testu edo aldagai bat pantailaratu ondoren hurrengo lerrorako jauzi bat txertatu nahi ezkero, nahiko da aldagai edo testuaren segidan inongo hutsunerik gabe <code>\n</code> jartzea.
 
==== Espresio eta eragile aritmetiko-logikoak ====
Lengoaia honetan, asignazio lineala gauzatzeko <code>=</code> erabiltzen da. Adibidez:<syntaxhighlight lang="c++">
i = 5;
</syntaxhighlight>Eragile aritmetikoei dagokionez, batuketarako <code>+</code> erabiltzen da, kenketarako <code>-</code> , biderketarako <code>*</code> , eta zatiketarako <code>/</code> . Modulu eragilea kasu honetan <code>%</code> da. Adibidez:<syntaxhighlight lang="c++">
x = 6*2+5/7-2
</syntaxhighlight>Eragile logikoen inguruan, ondorengoa dira erabilienak: <code>&&</code> (AND), <code>||</code> (OR) eta <code>!</code> (NOT) dira. Hauez gain, badaude erlazio-eragileak: <code><</code>, <code>></code>, <code>==</code>, <code><=</code>, <code>>=</code> eta <code>!=</code>.
 
Eragile guzti hauez gain, nabarmentzekoak dira inkrementu (<code>++</code>) eta dekrementu (<code>--</code>) eragileak.
 
=== Adibideak ===
''Kaixo mundua'' adibidea C++ lengoaian:<syntaxhighlight lang="c++">
#include <iostream>
using namespace std;
int main(){
cout<< " Kaixo mundua! ";
return 0;
}
</syntaxhighlight>
 
== Erreferentziak ==
[[Kategoria:Programazio lengoaiak]]
{{Erreferentzia zerrenda}}
== Ikus, gainera == * [[Programazio-lengoaia]] * [[C (programazio lengoaia)|C]] * [[C#]] * [[BASIC]] * Visual C.NET * Visual Basic.NET * [[.NET|.NET Framework]] * Visual Studio.NET * ASP.NET * [[ADO.NET]] * [[CLR]] * .NET Show * [[.NET]] * [[Oinarri Klase Liburutegi|.NET oinarri klase liburutegia]] [[Kategoria:Programazio lengoaiak]]