box template z alokacją pamięci

hm.
kod podany niżej jest prosty ale jego pisanie to dobre ćwiczenie dla początkujących  :) . nic nie można wprowadzać z poziomu programu, zmiany długości tylko w kodzie, na ekranie widzimy 4 wyniki, w tym przypadku dla (1,1,1) i (2,2,2).
klik:


Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5. template <class T>
  6. class box{
  7. private:
  8. T *a,*b,*c;
  9. public:
  10. T obj(){ return (*a)*(*b)*(*c);}
  11. T pol(){return 2*(*a)*(*b)+2*(*b)*(*c)+2*(*a)*(*c);}
  12. box(T,T,T);
  13. ~box();
  14. box();
  15.  
  16. };
  17.  
  18.  
  19.  
  20.  
  21. template <class T1>
  22. box<T1>::box(T1 x,T1 y,T1 z){ //konstruktor
  23. a= new T1;
  24. b=new T1;
  25. c=new T1;
  26.  
  27. *a = x;
  28. *b = y;
  29. *c = z;
  30. }
  31.  
  32. template <class T1>
  33. box<T1>::box(){
  34. a = new T1;
  35. b = new T1;
  36. c = new T1;
  37.  
  38. *a=1.00;
  39. *b=1.00;
  40. *c=1.00;
  41. return;
  42. }
  43.  
  44. template <class T1> //destruktor
  45. box<T1>::~box(){
  46. delete a;
  47. delete b;
  48. delete c; }
  49.  
  50.  
  51.  
  52.  
  53. int main(int argc, char *argv[])
  54. {
  55. box<float> s; //tu używa liczb zadeklarowanych w konstruktorze
  56. box<float> z(2,2,2); //tutaj nastepuje zmiana zmiennych
  57.  
  58. cout<<"pole: "<<s.pol()<<endl;
  59. cout<<"obj: "<<s.obj()<<endl<<endl;
  60. cout<<"pole: "<<z.pol()<<endl;
  61. cout<<"obj: "<<z.obj()<<endl;
  62. system("PAUSE");
  63. return EXIT_SUCCESS;
  64. }

Komentarze

Popularne posty z tego bloga

[c++] Lista wskaznikowa

[c++] słowniki - haszowanie - haszowanie otwarte

[ANSI C][LINUX] Wysyłanie i obsługa sygnałów