无法用基本clase rvalue初始化指向子类的指针
Cannot initialize pointer to a subclass with base clase rvalue
我对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();
答案应该是:
不编译。不能用学生rvalue初始化经济研究。
我知道并理解,一个人不能初始化指向子类的指针,并使用基本群的对象的地址和地址,并且这不会编译。我不明白的是rvalue。据说Rvalue要使答案有效吗?我的助教坚持认为,但我不这么认为。你怎么看?
指定RVALUE使答案有效吗?
我不这么认为。检查尝试使用lvalue初始化EconomyStudent *economyStudent
的情况:
Student student;
student.checkFinances();
Student *lvalue = &student;
EconomyStudent* economyStudent = lvalue;
clang
在我的机器上抱怨,说
错误:不能用类型的" student *"类型的"经济研究 *"类型的变量 *
因此,编译器输出方面的唯一差异是RVALUE与LVALUE。由于值类别与摘要中的错误类型无关,因此您可以告诉助教,互联网上的某些随机用户认为您是对的。
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 将C++子类成员函数(虚拟实现)传递给 C 类型函数指针
- 为什么使用父指针指向子类?
- C++通过基类指针提升子类的序列化
- 如果指针的子类的方法对于子类是唯一的,如何访问这些方法?
- C++基类指针调用子虚函数,为什么基类指针可以看到子类成员
- 为什么指向基类的指针可以指向子类的对象?
- C++ 使用正确的子类指针
- 如何在 BaseClass 指针数组中存储指向子类对象的指针?
- 带有基类指针的强制转换向量,指向子类
- 跨子类的共享指针
- 无法将参数 3 从 'const QGraphicsItem *' 转换为 'const QObject *',这是指针,对象是 QGraphicsObject 的子类
- 如何从其抽象母类上的指针初始化子类?
- 可以将指向子类的指针分配给Varibale的超级类型
- 声明基类类型的指针,但随后通过指向子类来实例化它.这是良好的编程实践吗?
- C++引用基类中的子类指针属性
- 存储子类指针的方法
- 将空基类指针强制转换为子类指针
- 子类指针的转换无效