C++
Lab_4
Tablicy obiektów
Stworzyć nowy projekt. Dodać do projektu plik incl.h, w którym umieścić deklaracje klasy NODE_COORD:
class NODE_COORD
{
double *pcoord; //pcoord[0] - x, pcoord[1] - y
public:
NODE_COORD() : pcoord(NULL) {} //konstruktor domyślny
NODE_COORD(double x, double y); //konstruktor sparametryzowany
~NODE_COORD(); //destruktor
void disp(); //wyświetla na monitorze x, y
private:
void crash(); //obsługuje błąd alokowania pamięci
};
class NODE_COORD
{
double *pcoord; //pcoord[0] - x, pcoord[1] - y
public:
NODE_COORD() : pcoord(NULL) {cout << "konstruktor domysl: NODE_COORD\n";}
NODE_COORD(double x, double y); //konstruktor sparametryzowany
~NODE_COORD(); //destruktor
void set(double x, double y); //ustala współrzędne x, y po inicjowaniu
void disp(); //wyświetla na monitorze x, y
private:
void crash(); //obsługuje błąd alokowania pamięci
};
Konstruktorzy klas wyprowadzają na monitor komunikaty o działalności konstruktora, a destruktor - destruktora.
Funkcja main wykonuje testowanie obiektów klasy:
int _tmain(int argc, _TCHAR* argv[])
{
const double math_pi = 3.141592;
NODE_COORD tb[3] = { NODE_COORD(0, 0), NODE_COORD(1, 0), NODE_COORD(0, 1) };
for(size_t i=0; i<3; ++i)
{
//wyświetlić każdy element tablicy na monitorze
}
NODE_COORD * ptr = NULL, * tmp_ptr = NULL;
//zaalokować dynamicznie tablicę typu NODE_COORD o 10 elementów. Wskaźnik za //pomocą operatora new
//ptr dostaje adres tablicy
tmp_ptr=ptr;
for(size_t i=0; i<10; ++i)
{
//policzyć współrzędne x, y, leżące na okręgu o promieni r0
//posługując wskaźnikiem tmp_ptr przypisać współrzędne x, y każdemu
//elementowi tablicy. Każdy element tablicy przedstawia punkt, leżący na
//okręgu o promieni r0
}
fun(ptr); //stworzyć funkcje fun, która wydrukuje na monitorze współrzędne dla
//wszystkich punktów, leżących na okręgu
//zwolnić pamięć dla tablicy obiektów
//zaalokować pamięć za pomocą funkcji malloc dla 10 elementów tablicy
ptr = (NODE_COORD *)malloc(10*sizeof(NODE_COORD));
if(!ptr)
crash_memory(); //funkcja obsługi błędu w przypadku niepowodzenia
for(size_t it = 0; it<10; ++it)
{
//policzyć współrzędne x, y, leżące na okręgu o promieni r0
//posługując wskaźnikiem tmp_ptr przypisać współrzędne x, y każdemu
//elementowi tablicy. Każdy element tablicy przedstawia punkt, leżący na
//okręgu o promieni r0
}
fun(ptr);
//co tu trzeba zrobić?
system("pause");
return 0;
}
Policzyć, ile razy wywołują się konstruktorzy i destruktory. Uzupełnić funkcje main odpowiednio komentarzam.