наследование

#include <iostream> using namespace std; // Базовый класс class base { private: // зона private не наследуется static int count; int id; protected: char *name; double field; public: base(); ~base(); void out(); }; int base :: count = 0; // статическое поле // Конструктор базового класса base :: base() { char s[40]; count++; id = count; cout << "Введите name: "; cin >> s; name = new char [strlen(s)]; strcpy(name, s); cout << "field= "; cin >> field; } //Деструктор базового класса base :: ~base() { cout << "Удален объект: " << id << ". " << name << " " << field << endl; } // Функция вывода базового класса void base :: out() { cout << id << ". " << name << " " << field << endl; } // Производный класс class child : public base { protected: static int count; int id; char *t; int field_child; public: child(); ~child(); void out(); }; // Статическое поле производного класса int child :: count = 0; // Конструктор производного класса (вызывает конструктор базового и дополняет его) child :: child() : base() { char s[40]; count++; id = count; cout << "Введите t: "; cin >> s; t = new char [strlen(s)]; strcpy(t, s); cout << "field_cild "; cin >> field_child; } // Деструктор производного класса child :: ~child() { cout << "Удален объект child: "<< id << ". " << name << " " << field << " " << t << " " << field_child << endl; } // Функция вывода производного класса void child :: out() { cout << id << ". " << name << " " << field << " " << t << " " << field_child << endl; } // Главная функция void main() { child *f[2]; system("chcp 1251"); system("cls"); // Создаем 2 объекта производного класса f[0] = new child; f[1] = new child; // Вывод сведений в цикле for(int i=0; i<2;i++) f[i]->out(); // Удаляем 2 объекта delete f[0]; delete f[1];; cin.get(); cin.get(); }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.