阅读下列说明、C++代码和运行结果,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。 【说明】 对部分乐器进行建模,其类图如图5-1所示,包括:乐器(Instrument)、管乐器(Wind)、打击乐器(Percussion)、弦乐器(Stringed)、木管乐器(Woodwind)、铜管乐器(Brass)。图5-1 类图 下面是实现上述设计的C++代码,其中音乐类(Music)使用各类乐器(Instrument)进行演奏和调音等操作。
【C++代码】 include<iostream> using namespace std; enum Note { /* 枚举各种音调 */ MIDDLE_C, C_SHARP, B_FLAT }; class Instrument{ /* 抽象基类,乐器 */ public: (1) ; //play函数接口 virtual void adjust()=0; //adjust函数接口 }; class Wind (2) { public: void play(Note n) { cout<<"Wind.play()"<<n<<end1; } void adjust() { cout<<"Wind.adjust()"<<end1; } }; /* 类Percussion和Stringed实现代码略 */ class Brass (3) { public: void play(Note n) { cout<<"Brass.play()"<<n<<end1; } void adjust() { cout<<"Brass.adjust ()"<<end1; } }; class Woodwind : public Wind { public: void play(Note n) { cout<<"Woodwind.play()"<<n<<end1; } }; class Music { public: void tune(Instrument* i) { i->play(MIDDLE_C); } void adjust(Instrument* i) { i->adjust(); } void tuneAll((4) e[], int numIns) { /* 为每个乐器定调 */ for(int i=O; i<numlns; i++) { this->tune(e[i]); this->adjust(e[i]); } } }; /* 使用模板定义一个函数size,该函数将返回数组array的元素个数,实现代码略 */ int main() { Music* music= (5) Music(); Instrument* orchestra[]={ new Wind(), new Woodwind() }; music->tuneAll(orchestra, size(orchestra)); /* size数组orchestra的元素个数 */ for (int i=0; i<size (orchestra), i++) delete orchestra[i]; delete music; } 本程序运行后的输出结果为: Wind.play() 0 Wind.adjust() Woodwind.play() 0 Wind.adjust()