Zdefiniuj klasę Number zawierającą czysto wirtualną funkcję
print().
Napisz trzy klasy Integer, Double oraz
Complex dziedziczące z klasy Number, które opisują
odpowiednio liczby całkowite, podwójnej precyzji i zespolone. Definicje tych
klas powinny zawierać: konstruktor, inicjalizujący wartość liczby, metodę
print(), wypisującą wartość liczby w postaci nazwa typu:
wartość gdzie nazwa typu oznacza odpowiednio napis
Integer, Double lub Complex.
Zdefiniuj operator strumieniowy dla klasy Number (korzystający z
funkcji print()).
Napisz funkcję main(), która: wczytuje liczbę całkowitą
n, oznaczającą długość tablicy liczb, alokuje tablicę liczb
(wskaźników do obiektów klasy Number) o długości n,
dla każdej pozycji tej tablicy losuje kod (0 dla liczb całkowitych, 1 dla
rzeczywistych i 2 dla zespolonych) oraz wartość (2 wartości dla typu
Complex) elementu tablicy (typu wyznaczonego przez kod), drukuje
elementy tablicy korzystając z operatora wyjścia dla klasy
Number.
Uzupełnij następujący szkielet programu i zaimplementuj wymienione
funkcje i metody. Napisz funkcję main() testującą działanie
klas.
class Person {
protected:
string name;
int year_of_birth;
public:
Person(const string&, int);
virtual void print(ostream&) const;
};
class Worker : public Person {
protected:
double salary;
public:
Worker(const string&, int, double);
void print(ostream&) const;
double get_salary() const;
};
class Manager : public Worker {
string dept;
public:
Manager(const string&, int, double, const string&);
void print(ostream&) const;
string get_dept() const;
};
ostream& operator<<(ostream& os, const Person& o);
// make sure it prints the right object type (use print())
Napisz funkcję main(), która:
n, oznaczającą długość tablicy osób,Person) o długości n,Person, 1 dla obiektów Worker
i 2 dla obiektów Manager) oraz wartości pól odpowiadające danemu typowi (wyznaczonemu przez kod),Person.