如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问问从基类继承的成员。下列程序没有使用多态机制,其输出结果是【 】。 #include <iostream> using namespace std; class

admin2009-03-16  26

问题 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问问从基类继承的成员。下列程序没有使用多态机制,其输出结果是【  】。
   #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

解析 根据选择题(35)的解析我们知道,因为本题的print()函数不是虚函数,所以通过基类指针pb调用的print()函数,是基类中的版本,而通过派生类指针pd调用的print()函数,是派生类中的版本。因此,程序运行时会先输出一个’B’字符然后输出一个’D’字符。故应该填BD。
转载请注明原文地址:https://kaotiyun.com/show/oojp777K
0

最新回复(0)