c++编程思想中的例子,谁能帮我解释下?
//---------------------------------------#pragma hdrstop#include<iostream.h>//using namespace std;enum note{middleC,Csharp,Cflat};class instrument{public: virtual void play(note) const { cout<<"instrument::play"<<endl; } virtual char* what() const { return "instrument"; } virtual void adjust(int){}};//Wind objects are instruments//because they have the same interface:class wind:public instrument{public: //redefine interface fuction: void play(note) const { cout<<"wind::play"<<endl; } char* what() const{ return "wind";} void adjust(int){}};class percussion:public instrument{public: void play(note)const { cout<<"percussion::play"<<endl; } char * what() const{return "percussion";} void adjust(int){}};class String:public instrument{public: void play(note) const { cout<<"string::play"<<endl; } char* what() const{return "string";} void adjust(int){}};class brass:public wind{public: void play(note)const { cout<<"brass::play"<<endl; } char* what()const{return "brass";}};class woodwind:public wind{public: void play(note) const { cout<<"woodwind::play"<<endl; } char* what() const{return "woodwind";}};//Identical function from before:void tune(instrument& i){ i.play(middleC);}void f(instrument& i){i.adjust(1);}//Upcasting during array initializationinstrument* A[]={ new wind, new percussion, new String, new brass}; //---------------------------------------#pragma argsusedint main(){ wind flute; percussion drum; String violin; brass flugelhorn; woodwind recorder; tune(flute); tune(drum); tune(violin); tune(flugelhorn); tune(recorder); f(flugelhorn); system("pause");}//---------------------------------------