avr39ripe

cppMarksClassExampleCtorDtor

Jul 9th, 2021
994
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. class MarksStorage
  4. {
  5.     size_t size;
  6.     int* storage;
  7. public:
  8.     MarksStorage(size_t sizeP) : size{ sizeP }, storage{ new int[sizeP] {} } {std::cout << "Acquire memory for marks!\n"; }
  9.     MarksStorage() : MarksStorage(1) {}
  10.  
  11.     bool setMark(size_t id, int mark)
  12.     {
  13.         if (id < 0 or id > size - 1 or mark < 1 or mark > 12) { return false; }
  14.         storage[id] = mark;
  15.         return true;
  16.     }
  17.  
  18.     int getMark(size_t id)
  19.     {
  20.         if (id < 0 or id > size - 1) { return 0; }
  21.         return storage[id];
  22.     }
  23.  
  24.     void print()
  25.     {
  26.         std::cout << "Marks: ";
  27.         for (int i{ 0 }; i < size; ++i)
  28.         {
  29.             std::cout << storage[i] << ' ';
  30.         }
  31.         std::cout << '\n';
  32.     }
  33.  
  34.     ~MarksStorage() { delete[] storage; std::cout << "Release memory from marks!\n"; }
  35. };
  36.  
  37.  
  38. int main()
  39. {
  40.     MarksStorage ms1{ 4 };
  41.  
  42.     ms1.setMark(0, 11);
  43.     ms1.setMark(1, 7);
  44.     ms1.setMark(2, 9);
  45.     ms1.setMark(3, 10);
  46.  
  47.     ms1.print();
  48.  
  49.     MarksStorage ms2;
  50.     ms2.setMark(4, 11);
  51.     ms2.print();
  52.     ms2.setMark(0, 15);
  53.     ms2.print();
  54.     ms2.setMark(0, 9);
  55.     ms2.print();
  56.  
  57.     return 0;
  58. }
RAW Paste Data