C++
Lab_2
Stworzyć klasę my_vol, celem którego jest obliczenie objętości prostopadłościanu V = abc, gdzie a, b, c - rozmiary stron. Wartości a, b, c (typu double, składowe prywatne klasy) muszą być przekazane konstruktorowi tej klasy. Dane wprowadzić z monitora. Klasa musi zawierać:
Funkcje obliczenia objętości V .
Funkcje wyświetlania wyniku na monitor.
Zapoznać się z działaniem przykładu wzorcowego W1_1_Lab (http://torus.uck.pk.edu.pl\~fialko). Zmienić program tak, żeby maksymalną ilość elementów w steku przekazywać konstruktorowi klasy. W konstruktorze klasy użyć dynamiczną alokacje pamięci. Wprowadzić destruktor, który zwalnia pamięć.
Stworzyć nowy projekt i wkopiować zadanie:
#include "windows.h"
#include <iostream>
using namespace std;
class my_timer
{
DWORD t_start; //czas tworzenia obiektu
double elapsed; //czas trwania obiektu
static int count; //licznik timer'ow
int id; //identyficator timera
public:
my_timer();
~my_timer();
};
my_timer::my_timer()
{
//pobrać czas CPU (GetTickCount())
// inkrementujemy count i przypisujemy do id
//wyprowadzamy na monitor „obiekt „ id „ is created”
}
my_timer::~my_timer()
{
//zawieszamy wykonanie o 1000 ms
//pobieramy znów czas CPU I liczymy trwałość istnienia obiektu
//wyprowadzamy na monitor „obiekt „ id „czas istnienia” elapsed „ ms” „
//is destructed”
//zawieszamy wykonanie programu do nacinicia na dowolną kławiszę
}
class my_cl
{
my_timer tt;
char obj_name[256];
public:
my_cl(char *str){
cout << "konstructor my_cl: " << str << "\n";
strcpy_s(obj_name, sizeof(obj_name), str);
}
~my_cl() {
cout << "destructor my_cl: " << obj_name << "\n";
system("pause");
}
};
int my_timer::count = 0;
my_cl ob_glob("glob");
int _tmain(int argc, _TCHAR* argv[])
{
int i, n = 3;
for(i=0; i<n; ++i)
{
my_cl ob_loc("loc");
static my_cl ob_loc_static("loc static");
}
return 0;
}
Dla podanego kodu napisać obsługę klasy timer. Jako przykład pobrać W1_2.pdf (przykłady do wykładów). Wyjaśnić, w jakiej kolejności są wywołane konstruktory oraz destruktory klas timer oraz my_cl dla obiektu my_cl globalnego, my_cl lokalnego oraz my_cl lokalnego static.