Здравствуйте!
Допустим, есть класс Employee, от него наследуется класс Manager, от него Scientist. Верно ли я понял, что конструкторы каждого
производного класса должны содержать конструкторы базовых классов?
Т.е. в Manager - конструктор от Employee, а в Scientist - Manager, содержащий в себе конструктор от Employee?
Код:
#include <iostream>
////////////////////////////////////////
class Employee
{
protected:
int empNum;
char* empSurname;
public:
Employee(): empNum(-1), empSurname(NULL) {};
Employee(int num, char* adrS): empNum(num), empSurname(adrS) {};
~Employee()
{
delete empSurname;
}
void displayS(int N);
} ;
void Employee::displayS(int N)
{
if (N)
{
std::cout << "\nСотрудник №" << empNum << ':'
<< "\nФамилия: " << empSurname;
}
else
std::cout << "\nСписок пуст!";
}
////////////////////////////////////////
class Manager : public Employee
{
private:
char* empPosition;
public:
Manager(): empPosition(NULL) {};
Manager(int num, char* adrS, char* adrP):
Employee(num, adrS)
{ empPosition = adrP; }
~Manager()
{
delete empPosition;
}
void displayP();
} ;
void Manager::displayP()
{
std::cout << "\nДолжность: " << empPosition;
}
////////////////////////////////////////
class Scientist : public Manager
{
private:
int pubs;
public:
Scientist(): pubs(-1) {};
Scientist(int num, char* adrS, char* adrP, int p):
Manager(num, adrS, adrP)
{ pubs = p; }
void displayPubs();
} ;
void Scientist::displayPubs()
{
if (pubs)
std::cout << "\nКоличество публикаций: " << pubs;
else
std::cout << "\nПубликаций нет!";
}