Срезание объекта в C++
Объект потомка занимает в памяти больше места, чем переменная базового типа.
При копировании в User по значению лишняя часть
Student отбрасывается - это называют
срезанием. Передача по значению в функцию
ведет себя так же. Запишем поле grade,
скопируем студента в User и выведем,
что осталось:
class User {
public:
int age = 0;
};
class Student : public User {
public:
int grade = 1;
};
Создадим объект класса Student и скопируем его в User:
int main() {
Student student;
student.age = 20;
student.grade = 3;
User user = student;
std::cout << user.age << "\n";
return 0;
}
Сделайте классы User и Employee
с разными полями, создайте сотрудника,
присвойте его переменной типа User
и выведите только те поля, которые
остались у базовой части.