C ++ Klasa abstrakcyjna: konstruktor tak lub nie?
Klasa z jedną (lub większą liczbą) wirtualnych funkcji czystych jest abstrakcyjna i nie można jej użyć do utworzenia nowego obiektu, więc nie ma konstruktora.
Czytam książkę, która zawiera następujący przykład:
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;
};
Jeśli klasa jest abstrakcyjna, dlaczego mamy konstruktora? Używa tej klasy później (Boss
pochodzi z publicznychEmployee
):
void Boss::Boss (const char* first, const char* last, double s)
: Employee (first, last)