35657

Untitled

Jun 8th, 2024
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct date {
  6.     int day_;
  7.     int month_;
  8.     int year_;
  9. };
  10.  
  11. class person {
  12.  
  13. public:
  14.  
  15.     person(const int id, const char* last_name, const char* first_name, const char* middle_name, const date birthday) : id_(id), last_name_(new char[strlen(last_name) + 1]), first_name_(new char[strlen(first_name) + 1]), middle_name_(new char[strlen(middle_name) + 1]), birthday_(birthday) {
  16.         strcpy(last_name_, last_name);
  17.         strcpy(first_name_, first_name);
  18.         strcpy(middle_name_, middle_name);
  19.         count_person_++;
  20.     }
  21.  
  22.     person() : person(11111, "Ivanov", "Ivan", "Ivanovich", {1,1,1993}) {}
  23.  
  24.     person(const person& other) : person(other.id_, other.last_name_, other.first_name_, other.middle_name_, other.birthday_) {}
  25.  
  26.     static int get_count_person() {
  27.         return count_person_;
  28.     }
  29.  
  30.     void set_id(const int id) {
  31.         id_ = id;
  32.     }
  33.  
  34.     void set_last_name(const char* last_name) {
  35.         delete[] last_name_;
  36.         last_name_ = new char[strlen(last_name) + 1];
  37.         strcpy(last_name_, last_name);
  38.     }
  39.  
  40.     void set_first_name(const char* first_name) {
  41.         delete[] first_name_;
  42.         first_name_ = new char[strlen(first_name) + 1];
  43.         strcpy(first_name_, first_name);
  44.     }
  45.  
  46.     void set_middle_name(const char* middle_name) {
  47.         delete[] middle_name_;
  48.         middle_name_ = new char[strlen(middle_name) + 1];
  49.         strcpy(middle_name_, middle_name);
  50.     }
  51.  
  52.     void set_birthday(const int day, const int month, const int year) {
  53.         birthday_.day_ = day;
  54.         birthday_.month_ = month;
  55.         birthday_.year_ = year;
  56.     }
  57.  
  58.     void print() {
  59.         cout << last_name_ << " " << first_name_ << " " << middle_name_ << ", id - " << id_ << ", " << birthday_.day_ << "." << birthday_.month_ << "." << birthday_.year_ << endl;
  60.     }
  61.  
  62.     ~person() {
  63.         delete[] last_name_;
  64.         delete[] first_name_;
  65.         delete[] middle_name_;
  66.         count_person_--;
  67.     }
  68.  
  69. private:
  70.     int id_; // id
  71.     char* last_name_; // фамилия
  72.     char* first_name_; // имя
  73.     char* middle_name_; // отчество
  74.     date birthday_; // дата рождения
  75.     static int count_person_; // общее количество людей
  76. };
  77.  
  78. int person::count_person_ = 0;
  79.  
  80. int main() {
  81.  
  82.     person p1;
  83.  
  84.     person p2{ 222222, "Petrov", "Petr", "Petrovich", {23,9,1997} };
  85.  
  86.     person p3{ p2 };
  87.  
  88.     p1.print();
  89.     p2.print();
  90.     p3.print();
  91.    
  92.     cout << person::get_count_person() << endl;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment