C ++ Абстрактный класс: конструктор да или нет?
Класс с одной (или несколькими) виртуальными чистыми функциями является абстрактным, и его нельзя использовать для создания нового объекта, поэтому он не имеет конструктора.
Я читаю книгу, которая предоставляет следующий пример:
class Employee {
public:
Employee(const char*, const char*);
~Employee();
const char* getFirstName() const;
const char* getLastName() const;
virtual double earnings() const=0 // pure virtual => abstract class
virtual void print() const
private:
char* firstName, lastName;
};
Если класс абстрактный, почему у нас есть конструктор? Он использует этот класс позже (Boss
является публичным производным отEmployee
):
void Boss::Boss (const char* first, const char* last, double s)
: Employee (first, last)