如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制:
#include <iostream>
using namespace std;
class Base
int a,b;
public:
Base(int x,inty)a=x;b=y;
void show( )cout<<a<<’,’<<b<<endl;
;
class Derived:public Base
int C,d;
public:
Derived(int x,int y,int z,intm):Base(x,y)c=z;d=m;
void show( )cout<<c<<’,’<<d<<endl;
.
int main( )
Base BI(50,50),*pb;
Derived D1(10,20,30,40);
pb=&D1;
pb->show( );
return 0;
程序的输出结果是
A.10,20
B.30,40
C.20,30
D.50,50
参考答案:A
解析: pb作为基类指针,可以指向派生类对象,但是它只能访问基类的成员函数,而不能访问派生类的成员函数,所以pb->show( );访问的是基类的show( )函数,故打印10,20。