本題來源於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;
}