Advertisement
Viktor_Profa

Лабораторна робота №4

Oct 27th, 2024
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. // Базовий клас "Замовник"
  6. class Zamovnyk {
  7. protected:
  8.     string name;
  9.     string contactInfo;
  10.  
  11. public:
  12.     // Конструктор з параметрами
  13.     Zamovnyk(string n, string contact) : name(n), contactInfo(contact) {}
  14.  
  15.     // Метод для виведення інформації
  16.     virtual void info() const {
  17.         cout << "Ім'я замовника: " << name << endl;
  18.         cout << "Контактна інформація: " << contactInfo << endl;
  19.     }
  20.  
  21.     // Віртуальний деструктор
  22.     virtual ~Zamovnyk() {}
  23. };
  24.  
  25. // Похідний клас "Підприємство"
  26. class Pidpryiemstvo : public Zamovnyk {
  27. private:
  28.     string companyName;
  29.     string edrpouCode;
  30.  
  31. public:
  32.     // Конструктор з параметрами
  33.     Pidpryiemstvo(string n, string contact, string compName, string code)
  34.         : Zamovnyk(n, contact), companyName(compName), edrpouCode(code) {}
  35.  
  36.     // Перевизначений метод для виведення інформації
  37.     void info() const override {
  38.         Zamovnyk::info();
  39.         cout << "Назва підприємства: " << companyName << endl;
  40.         cout << "Код ЄДРПОУ: " << edrpouCode << endl;
  41.     }
  42. };
  43.  
  44. // Похідний клас "Приватна особа"
  45. class PryvatnaOsoba : public Zamovnyk {
  46. private:
  47.     string taxID;
  48.  
  49. public:
  50.     // Конструктор з параметрами
  51.     PryvatnaOsoba(string n, string contact, string id)
  52.         : Zamovnyk(n, contact), taxID(id) {}
  53.  
  54.     // Перевизначений метод для виведення інформації
  55.     void info() const override {
  56.         Zamovnyk::info();
  57.         cout << "Ідентифікаційний номер (ІНН): " << taxID << endl;
  58.     }
  59. };
  60.  
  61. // Функція для демонстрації конструктора копіювання
  62. void demoCopyConstructor(const Zamovnyk& z) {
  63.     cout << "Демонстрація конструктора копіювання:" << endl;
  64.     z.info();
  65. }
  66.  
  67. int main() {
  68.     // b. Ініціалізація об'єктів довільними даними
  69.     Pidpryiemstvo company("Іван Петров", "ivpetrov@gmail.com", "ТОВ \"Ромашка\"", "12345678");
  70.     PryvatnaOsoba individual("Оксана Коваленко", "okovalenko@gmail.com", "987654321");
  71.  
  72.     // Виведення інформації про підприємство
  73.     cout << "Інформація про підприємство:" << endl;
  74.     company.info();
  75.  
  76.     // Виведення інформації про приватну особу
  77.     cout << "\nІнформація про приватну особу:" << endl;
  78.     individual.info();
  79.  
  80.     // c. Демонстрація конструктора копіювання
  81.     cout << "\n--- Конструктор копіювання ---\n";
  82.     demoCopyConstructor(company);  // Виклик конструктора копіювання для об'єкта "company"
  83.     demoCopyConstructor(individual); // Виклик конструктора копіювання для об'єкта "individual"
  84.  
  85.     return 0;
  86. }
  87.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement