Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpIhSl 74 of 150 menu
◀ ▶

Срезание объекта в 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 и выведите только те поля, которые остались у базовой части.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить