#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
}