首页 > 试题广场 >

#includeusingnamespac...

[单选题]
#include<iostream>
using namespace std;
class Base
{
public:
    virtual void foo(){cout << 'a';}   
};
class Middle:public Base
{
public:
    void foo(){cout <<'b';}
};
class Derived:public Middle
{
public:
    void foo(){cout <<'c';}
};
int main()
{
    Base* p1;
    Middle* p2;
    Derived d;
    p1 = &d;
    p1->foo();
    p2 = &d;
    p2->foo();
}
程序运行结果为
  • ab
  • cc
  • aa
  • bc
在基类方法的声明中使用关键字virtual可使该方法在基类以及所有的派生类(包括从派生类派生出来的类)中都是虚拟的。 所以在基类指针所指对象为派生类时,虚函数表中存放的是派生类实现的函数指针。这就是多态。
发表于 2021-07-27 09:39:37 回复(0)