Загрузка данных


#include <iostream>
#include <string>

class Person
{
public:
    Person(std::string name) : name{ name }
    {
    }
    void print() const
    {
        std::cout << "Name: " << name << std::endl;
    }
private:
    std::string name;       //  имя
};
class Employee : public Person
{
public:
    Employee(std::string name, std::string company) : Person{ name }, company{ company }
    {
    }
    void print() const
    {
        Person::print();
        std::cout << "Works in " << company << std::endl;
    }
private:
    std::string company;    // компания
};

int main()
{
    Person tom{ "Tom" };
    Person* person{ &tom };
    person->print();     // Name: Tom

    Employee bob{ "Bob", "Microsoft" };
    person = &bob;
    person->print();    // Name: Bob
}
------------------------------------------------------------------------------------------------------


позднее (динамическое)
#include <iostream>
#include <string>

class Person
{
public:
    Person(std::string name) : name{ name }
    {
    }
    virtual void print() const  // виртуальная функция
    {
        std::cout << "Name: " << name << std::endl;
    }
private:
    std::string name;
};
class Employee : public Person
{
public:
    Employee(std::string name, std::string company) : Person{ name }, company{ company }
    {
    }
    void print() const
    {
        Person::print();
        std::cout << "Works in " << company << std::endl;
    }
private:
    std::string company;
};

int main()
{
    Person tom{ "Tom" };
    Person* person{ &tom };
    person->print();     // Name: Tom
    Employee bob{ "Bob", "Microsoft" };
    person = &bob;
    person->print();    // Name: Bob
    // Works in Microsoft
}