本题来源于Morgan Stanley暑期实习生招聘中的online test环节,考察了C++中多态、继承方面的知识。
What will the following polymorphic code output in C ++?
#include <iostream>
#include <string>
#include <queue>
#include <map>
using namespace std;
class Base{
public:
virtual int number(){return 0;}
char letter(){ return 'b';} //这个函数没有声明为virtual虚函数
};
class Two:public Base{
virtual int number(){ return 2;}
char letter(){ return 't';}
};
class Four:public Base{
virtual int number(){return 4;}
char letter(){return 'f';}
};
void print(Base* base){
cout<<base->letter()<<base->number()<<endl;
}
int main()
{
Base base;
Two two;
Four four;
print(&base); //cout: b0
print(&two); //cout: b2
print(&four); //cout: b4
return 0;
}