A-A+

如果不使用多态机制 那么通过基类的指针虽然可以指向派生类对象 但是只能访问问从基类继承的成员

2022-08-06 05:38:37 问答库 阅读 176 次

问题详情

如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问问从基类继承的成员。下列程序没有使用多态机制,其输出结果是【 】。
include <iostream>
using namespace std;
class Base {
public:
void print () {cout << "B"; }};
class Derived: public Base {
public:
void print () {cout <<"D";}};
int main()
{
Derived* pd = new Derived();
Base* pb = pd;
pb->print();
pd->print();
delete pd;
return 0;
}请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:BD
BD 解析:根据选择题(35)的解析我们知道,因为本题的print()函数不是虚函数,所以通过基类指针pb调用的print()函数,是基类中的版本,而通过派生类指针pd调用的print()函数,是派生类中的版本。因此,程序运行时会先输出一个'B'字符然后输出一个'D'字符。故应该填BD。

考点:指针,机制