-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path1055_seminar04_Alex_Negescu.txt
96 lines (74 loc) · 2.06 KB
/
1055_seminar04_Alex_Negescu.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <string>
using namespace std;
class Carte
{
public:
const int idCarte; // ID ul nu se va modifica, fiind constant
const int codISBN;
string titlu;
unsigned int nrPagini;
double pret;
static double TVA; // valabil pentru toate cartile
static int nrExemplare;
static int contor;
// Constructor fara parametru:
Carte() : idCarte(contor++), codISBN(1234) // initializam cele 2 constante; constantele se initializeaza in antetul constructorului cu valorile dorite
{
titlu = "Ion";
pret = 20;
nrPagini = 300;
nrExemplare++;
}
// Constructor cu parametri:
Carte(int isbn, string titlu, int nrPagini, double pret) : idCarte(contor++), codISBN(isbn) {
this -> titlu = titlu;
this-> nrPagini = nrPagini;
this-> pret = pret;
nrExemplare++;
}
Carte(string s, double pret) : idCarte(contor++), codISBN(0)
{
nrPagini = 300;
titlu = s;
this-> pret= pret;
nrExemplare++;
}
void afisare()
{
cout << "ID: " << idCarte << " ISBN: " << codISBN << " TVA: " << TVA << "%. ";
cout << titlu << " costa " << pret << " lei si are " << nrPagini << " pagini" << endl;
}
~Carte()
{
nrExemplare--;
}
};
//functia de afisare trebuie scrisa in interiorul clasei
double Carte::TVA = 5;
int Carte::nrExemplare = 0;
int Carte::contor = 1;
// obiectul repr o instanta a clasei
// constructorul nu are tip returnat
// constructorii se pun in zona public
// constructorul se creeaza la apelarea de obiecte
void main()
{
Carte c1;
cout << c1.nrExemplare << endl; // afisare prin intermediul obiectului
cout << Carte::TVA << "%" << endl;
Carte c2(3456, "Iona", 80, 10);
cout << Carte::nrExemplare << endl; // afisare prin intermediul clasei
{
Carte c5;
cout << "In corp: " << Carte::nrExemplare << endl;
}
cout << "In afara corpului: " << Carte::nrExemplare << endl;
c1.afisare();
c2.afisare();
Carte* pc1 = &c1;
Carte* pc2 = new Carte(5678, "Mara", 200, 15);
cout << Carte::nrExemplare<<endl;
Carte c3("Ana", 400);
c3.afisare();
}