Lab cpp 05

background image

Laboratorium nr 5

Temat: Deklaracja konstruktorów oraz destruktorów dla klas. Przekazywanie parametrów do konstruktorów.

1) Konstruktory
Zadaniem konstruktorów jest inicjowanie obiektów. Konstruktory są funkcjami składowymi, które wywoływane są
automatycznie podczas tworzenia obiektu. Nazwa funkcje konstruktora odpowiada nazwie klasy. Funkcja
konstruktora musi być funkcją publiczną (public) i nie powinna zwracać żadnej wartości,

np.

klasa::klasa() {...}

C++ posiada możliwość przesłania parametrów do konstruktora obiektu, co rozwiązuje większość problemów na
jakie można się natknąć podczas inicjowania obiektu, np.

klasa::klasa(int x) {...}
...
class klasa obiekt( wartość typu int);

# include <conio.h>

# include <iostream.h>

# include <stdio.h>

# include <stdlib.h>

# include <alloc.h>

class macierz {

private:

int x,y;

int *tab;

public:

macierz(int n, int m);

int wprowadz(int i, int j, int w);

int wyswietl();

};

macierz::macierz(int n, int m){

x=n;

y=m;

tab=(int *) calloc(n*m,sizeof(int));

for (int i=0; i<n; i++)

for (int j=0; j<m; j++)

*(tab+y*i+j)=0;

}

int macierz::wprowadz (int i, int j, int w) {

*(tab+y*i+j)=w;

return 0;

};

int macierz::wyswietl(){

cout << "\nZadeklarowana macierz\n";

for (int i=0; i<x; i++)

for (int j=0; j<y; j++)

cout << "Macierz["<< i <<"][" << j<< "]=" << *(tab+y*i+j) << "\n";

};

int main() {

class macierz A(2,2),B(3,3);

clrscr();

A.wprowadz(1,1,1);

A.wyswietl();

B.wprowadz(1,1,1);

B.wyswietl();

getch();

return 0;

}

background image

2) Destruktory
Podobnie jak konstruktory, destruktory są wywoływane automatycznie w momencie zakończenia wykonywania
operacji na obiekcie/usuwania obiektu. Destruktory mogą np. zwalniać obszar pamięci, który został przydzielony
obiektowi. Destruktor definiuje się w ten sam sposób jak konstruktor, przy czym do jego nazwy dodaje się jedynie
znak ~, np.

klasa::~klasa() {...}

# include <conio.h>

# include <iostream.h>

# include <stdio.h>

# include <stdlib.h>

# include <alloc.h>

class macierz {

private:

int x,y;

int *tab;

public:

macierz(int n, int m);

~macierz();

int wprowadz(int i, int j, int w);

int wyswietl();

};

macierz::macierz(int n, int m){

x=n;

y=m;

tab=(int*)calloc(n*m,sizeof(int));

for (int i=0; i<n; i++)

for (int j=0; j<m; j++)

*(tab+y*i+j)=0;

};

macierz::~macierz(){

free(tab);

};

int macierz::wprowadz (int i, int j, int w) {

*(tab+y*i+j)=w;

return 0;

};

int macierz::wyswietl(){

cout << "\nZadeklarowana macierz\n";

for (int i=0; i<x; i++)

for (int j=0; j<y; j++)

cout << "Macierz["<< i <<"][" << j<< "]=" << *(tab+y*i+j) << "\n";

return 0;

};

int main() {

class macierz A(3,3);

clrscr();

A.wprowadz(1,1,1);

A.wyswietl();

getch();

return 0;

}


Uwaga: W przypadku C++ wszystkie wewnętrzne szczegóły związane z konstruktorem i destruktorem są
obsługiwane przez sam obiekt.

3) Zadanie:
Opracuj program, który będzie definiował obiekty typu „macierz” o zadanych wymiarach np. 3x3, oraz posiadał
możliwość dodawania, odejmowania i mnożenia zadeklarowanych macierzy, tzn. A+B , A-B , A*B

background image

Program powinien posiadać krótkie menu wyboru, np.:
1. Utwórz macierz
2. Wprowadź elementy macierzy
3. Wyświetl macierz
4. Dodaj macierze
5. itp.
6. Koniec


Wyszukiwarka

Podobne podstrony:
MB (Lab) Sprawozdanie 05
Lab cpp 12
lab pwsp 05 id 258618 Nieznany
Lab fiz 05, fff, dużo
Lab MG 05
Lab cpp 09
Lab cpp 02
Lab cpp 06
MB (Lab), Sprawozdanie 05
Lab cpp 08
Lab cpp 07
Lab cpp 03
Lab cpp 04
Lab cpp 11
MB (Lab) Sprawozdanie 05
Lab cpp 12
Lab MG 05
Lab 05 Obliczenia w C id 257534 Nieznany

więcej podobnych podstron