Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.20 KB | None | 0 0
  1. // Prosze napisac program w ktorum alokowana
  2. // dynamicznie pamiec dla tablicy znakowej
  3. // przechowujacej lanuch (nazwe towaru), a bedacej w czesci prywatnej klasy "towar"
  4. // Ponadto w tej klasie jest pole prywatne przechowujące ilosć obiektw tej klasy
  5. //czy ilosc towarow. We funkcji main jest tworozny obiekt tej klasy o nazwie
  6. //pierwszy inicjalizowany domyslnie lanuchem
  7. //jakis towar . Poza tym prosze utworzyc inny obiekt tej klasy o nazwie
  8. //drugi inicjalozwany lanuchem towar nr 2
  9. //Prose utworzyc kolejny obiekt tej klasy o nazwie trzeci,
  10. //W TEJ SAMEJ LINICJE, prosze go zainicjalizowac przy pomocy
  11. //drygiego obiektu tej klasy instrukcja, ktorej fragment ma postac
  12. //trzeci = pierwszy. Prosze wypisac przy pomoc odpowiednnej metody klasy
  13. //drukuj zawartosci dwoch obiektow z odpowiednim komentarzem
  14.  
  15. #include <iostream>
  16.  
  17. void problem_z_alokacja();
  18.  
  19. void problem_z_alokacja() {
  20.   std::cerr<< "Problem z alokacja pamieci "<<std::endl;
  21. };
  22.  
  23. class towar
  24. {
  25.   char *nazwa_towaru;
  26.  
  27. public:
  28.   towar();
  29.   towar(char *);
  30.   towar(const towar &);
  31.   towar operator=(towar &);
  32.   static int ilosc;
  33.   ~towar();
  34.  
  35.   void drukuj();
  36. };
  37.  
  38. int towar::ilosc = 0;
  39.  
  40. towar::towar()
  41. {
  42.  
  43.   nazwa_towaru = new char[20];
  44.   std::set_new_handler(problem_z_alokacja);
  45.   strcpy(nazwa_towaru, "jakis towar");
  46.   ilosc++;
  47. }
  48.  
  49. towar::towar(char *n)
  50. {
  51.   nazwa_towaru = new char[strlen(n) + 1];
  52.   std::set_new_handler(problem_z_alokacja);
  53.   strcpy(nazwa_towaru, n);
  54. };
  55.  
  56. towar::towar(const towar&t) {
  57.   nazwa_towaru = new char[strlen(t.nazwa_towaru) + 1];
  58.   std::set_new_handler(problem_z_alokacja);
  59.   strcpy(nazwa_towaru, t.nazwa_towaru);
  60.  
  61. };
  62.  
  63. towar towar::operator=(towar &t) {
  64.   if(this == &t) return *this;
  65.   delete[] nazwa_towaru;
  66.   nazwa_towaru = new char[strlen(t.nazwa_towaru) + 1];
  67.   std::set_new_handler(problem_z_alokacja);
  68.   strcpy(nazwa_towaru, t.nazwa_towaru);
  69.   return *this;
  70. }
  71. towar::~towar() {
  72.   delete[] nazwa_towaru;
  73.   ilosc--;
  74. };
  75.  
  76. void towar::drukuj() {
  77.   std::cout<<"Nazwa towaru: "<<nazwa_towaru<<std::endl;
  78. }
  79.  
  80. int main()
  81. {
  82.   towar pierwszy;
  83.   towar drugi("towar nr 2");
  84.   towar trzeci = pierwszy;
  85.  
  86.   pierwszy.drukuj();
  87.   drugi.drukuj();
  88.   trzeci.drukuj();
  89.   return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement