Witam
W jednym zadań na ćwiczeniach miałem za zadanie uzupełnić brakujący kod tak aby klasa działała poprawnie,uczę się , i nie jestem pewien czy o wszystkim pamiętałem dlatego proszę was o spojrzenie na kod . Będe bardzo wdzięczny jeśli ktoś mi zwróci na jakiś element uwagę:
Pozdrawiam i z góry dziękuje za uwagi:
// Prawie dobra klasa
#include <iostream>
using namespace std;
class A
{
int* tab;
static int c;
int n;
public:
A(int); // konstruktor
A(const A&); // konstruktor kopiujacy
~A(); // destruktor
void getA(); // metoda
};
int A::c = 0;
// Uzupelnic konstruktor!
A::A(int x):n(++c)
{
cout << "Poczatek konstruktora (" << n << ")" << endl;
tab=new int[2];
tab[0] =x;
tab[1]=x;
// tworzenie na stercie tablicy (tab) 2 elementow oraz
// wypelnienie jej wartosciami x
// ......
cout << tab[0] << ", " << tab[1] << endl;
cout << "Koniec konstruktora (" << n << ")" << endl;
}
// Uzupelnic konstruktor kopiujacy!
A::A(const A& aa):n(++c)
{
cout << "Poczatek konstruktora kopiujacego (" << n << ")" << endl;
tab=new int[2];
tab[0] = aa.tab[0];
tab[1] = aa.tab[1];
// wlasciwe kopiowanie (pola bedacego tablica 2 elementow typu int)
// ......
cout << tab[0] << ", " << tab[1] << endl;
cout << "Koniec konstruktora kopiujacego (" << n << ")" << endl;
}
// Uzupelnic desktruktor!
A::~A()
{
cout << "\nPoczatek destruktora (" << n << ")" << endl;
cout << tab[0] << ", " << tab[1] << endl;
// kod zwalniajacy pamiec tab
// ......
delete []tab;
cout << "Koniec destruktora (" << n << ")\n" << endl;
}
void A::getA()
{
cout << "Wynik (" << n << "): " << tab[0] << ", " << tab[1] << "\n" << endl;
}
int main()
{
A a1(10); // Poczatek konstruktora (1)
// 10, 10
// Koniec konstruktora (1)
a1.getA(); // Wynik (1): 10, 10
A a2 = A(20); // Poczatek konstruktora (2)
// 20, 20
// Koniec konstruktora (2)
a2.getA(); // Wynik (2): 20, 20
A a3 = A(a2); // Poczatek konstruktora kopiujacego (3)
// 20, 20
// Koniec konstruktora kopiujacego (3)
a3.getA(); // Wynik (3): 20, 20
A* a4 = new A(a1); // Poczatek konstruktora kopiujacego (4)
// 10, 10
// Koniec konstruktora kopiujacego (4)
a4->getA(); // Wynik (4): 10, 10
delete a4; // Poczatek destruktora (4)
// 10, 10
// Koniec destruktora (4)
system("pause"); // tylko MS Windows
// po zakonczeniu funkcji main
// Poczatek destruktora (3)
// 20, 20
// Koniec destruktora (3)
// Poczatek destruktora (2)
// 20, 20
// Koniec destruktora (2)
// Poczatek destruktora (1)
// 10, 10
// Koniec destruktora (1)
return 0;
}
delete a1;