#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.