Limbajul C++ ofera in plus fata de limbajul C unele facilitati noi. Un avantaj important il constituie notiunea de clasa (prin care se defineste un TAD), iar acestea pot forma o ierarhie, deci putem vorbi de o programare orientata obiect
In C++ exista un nou tip de comentariu (deja utilizat in exemplele anterioare):
. . . // Comentariu
Daca in limbajul C declaratiile erau scrise inainte de instructiuni, in C++ ele pot fi scrise oriunde.
Dispozitivelor standard de intrare-iesire li s-au atasat streamurile standard cin (pentru stdin) si respectiv cout (pentru stdout), care permit efectuarea operatiilor de intrare-iesire aplicand operatorul >> streamului cin, respectiv << streamului cout. Ierarhiile necesare sunt in fisierul iostream.h .
Exemplu:
#include <stdio.h>; #include <conio.h>;
#include <iostream.h>;
void main (void)
Daca in C conversia explicita se poate efectua prin (tip) expresie, in C++ se poate realiza si prin tip (expresie).
Exemplu:
#include <stdio.h>; #include <conio.h>;
#include <iostream.h>;
void main (void)
Acest operator ( ) se utilizeaza cand dorim sa referim o variabila globala redefinita intr-o functie, astfel:
Variabila
Exemplu:
#include <conio.h>;
#include <iostream.h>;
unsigned x; // Variabile Globale (::)
char y[10];
int i=99;
void main (void)
Acest operator (&) se poate utiliza si pentru a defini un tip referinta printr- declaratie de forma tip & (asemanator cu o constructie de forma tip , pentru pointer) Cu ajutorul acestui operator putem redenumi o variabila, putem realiza un apel prin referinta sau putem sa declaram o variabila de referinta astfel:
tip & parametru_formal // par. ref. (adresa
tip & nume_var_ref // var. de tip referinta
Exemple:
#include <conio.h>; // Redefinirea unei variabile
#include <iostream.h>;
void main (void)
#include <conio.h>; // Redefinirea unei functii
#include <iostream.h>;
#include <math.h>;
typedef double Functie (double);
void main (void)
#include <conio.h>; // Apel prin Referinta
#include <iostream.h>;
void suma (int x,int y,int z) // x,y z
void Suma (int x,int y,int &z) x,y z
void main (void)
Operatorul de alocare New se poate folosi in oricare dintre urmatoarele trei variante:
new tip
new tip ( Valoare_de_intitializare_a_variabilei_dinamice
new tip Numarul_de_variabile_dinamice_alocate
Dealocarea se realizeaza astfel:
delete Variabila_de_referinta
sau
delete Numarul_de_var_dinamice_alocate Variabila_de_referinta
Exemplu:
#include <stdio.h>; #include <conio.h>; #include <iostream.h>;
void main (void)
In exemplul urmator se va utiliza o matrice A cu numar variabil de coloane si o matrice B utilizand adresele liniilor:
#include <iostream.h>; #include 'Crt.Cpp'
typedef int Tip;
const n=4;
void main ()
for (i=1; i<=n; i++)
for (i=1; i<=n; i++)
int B[n+1][n+1];
for (i=1; i<=n; i++)
for (j=1; j<=n; j++) B[i][j]=i*10+j;
for (i=1; i<=n; i++) Readln();
Rezultate:
1 : 11
2 : 21 22
3 : 31 32 33
4 : 41 42 43 44
2 : 21 22
3 : 31 32 33
4 : 41 42 43 44
2 : 21 22 23 24
3 : 31 32 33 34
4 : 41 42 43 44
Referirea acestor tipuri se poate face in C++ fara a mai fi nevoie de cuvantul corespunzator struct, union, respectiv enum. De asemenea, parametrii si valoarea unei functii pot fi structuri, pointeri la structuri sau referinte la structuri. Sunt permise si atribuiri de structuri.
Referirea componentelor unei uniuni anonime din interiorul unei structuri se face la fel ca si referirea componentelor structurii, iar prima componenta se poate initializa.
In C++, variabilelor de tip enumerare nu se mai pot atribui decat valori ale acestui tip (nu si numerele asociate acestor elemente).
Exemple:
#include <stdio.h>; #include <conio.h>; #include <iostream.h>;
typedef float Real;
enum Figura ;
struct Punct ;
struct Cerc ;
struct Obiect ; };
Obiect Translatat ( Obiect o, Punct T )
void main (void)
Obiect O = };
Obiect C; C.FIG=cerc; C.CERC.Centru=O.PUNCT; C.CERC.Raza=10;
Obiect D; D=Translatat(C,P);
cout << ' D(' << D.CERC.Centru.x << ','
<< D.CERC.Centru.y << ','
<< D.CERC.Raza << ')' << endl; getch();
// Simetrizeaza cel mai apropiat punct fata de origine
#include <iostream.h>
#include 'crt.h'
struct Punct
Punct& SimO ()
};
Punct& Punct::CitP ()
void Punct::TipP ()
Punct& ApropO( Punct& P, Punct& Q )
void main (void)
// Simetrizeaza cel mai apropiat punct fata de origine
#include <iostream.h>
#include 'crt.h'
struct Punct
void TipP()
float D2 ()
Punct& SimO();
};
Punct& Punct::SimO()
Punct& ApropO (Punct& P, Punct& Q)
void main (void)
|