У меня есть вопрос относительно проблемы на экзамене C ++.У меня был довольно спор с помощником преподавателя, и я хочу знать, пропустил ли я что-то.
Дан следующий код:
class Student {
public:
virtual void checkFinanes() {
std::cout << "I have no money. \n";
}
};
class ExonomyStudent : public Student {
public:
virtual void checkFinances() {
std::cout << "I am making a lot of money.\n";
}
};
Вопрос:
Компилируется ли следующий код?Если так, то каков вывод на консоль, когда я ожидаю.Если нет, то почему нет?
Student student;
student.checkFinances();
EconomyStudent* economyStudent = &student;
economyStudent->checkFinances();
И ответ должен быть:
Не компилируется.Невозможно инициализировать EconomyStudent * со значением Student.
Я знаю и понимаю, что нельзя инициализировать указатель на подкласс с адресом объекта базового цикла и что он не компилируется.Чего я не понимаю, так это ценности.Действительно ли важно, чтобы rvalue был указан, чтобы сделать ответ действительным?Мой ассистент настаивал, но я так не думаю.Что ты думаешь?