閱讀以下說明、圖和C++代碼,填補(bǔ)C++代碼中的空缺(1)~(5),將解答寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
已知對(duì)某幾何圖形繪制工具進(jìn)行類建模的結(jié)果如圖5.1所示,其中Shape為抽象類(應(yīng)至少包含一個(gè)純虛擬( virtual)函數(shù)),表示通用圖形,Box表示矩形,Ellipse表示橢圓,Circle表示圓(即特殊的橢圓),Line表示線條。

圖6-1 類圖
下面的C++代碼用于實(shí)現(xiàn)圖5-1所給出的設(shè)計(jì)思路,將其空缺處填充完整并編譯運(yùn)行,輸出結(jié)果為:
Ellipse
Circle
Ellipse
C
E
【C++代碼】
#include <string>
#include <iostream>
using namespace std;
class Shape{
public:
Shape(const string& name){
m_name= name;
}
~Shape( ){}
(1) void paint( ) = 0;
stringgetName( )const {
return m_name;
}
private;
string m_name;
};
//Box和 Line類的定義與 Ellipse類似,其代碼略
class Ellipse (2) {
public:
Ellipse(const string& name) : Shape(name){ cout<<"Ellipse" <<end1; }
void paint( ) { cout<<getName( )<<end1;}
};
class Circle (3) {
public:
Circle(const string& name) : Ellipse(name){ cout<<"Circl"<<end1;
};
class Diagram {
public:
void drawAShap(Shape* shape){ shape->paint( ); }
void drawShapes( ) {
shapes[0] = new Circle("C");
shapes[l] = new Ellipse("E");
for (int i=0;i<2; ++i) {
drawAShap(shapes[i]);
}
}
void close ( ){ /*刪除形狀,代碼略 */ }
private:
Shape* shapes[2];
};
int main( )
{
Diagram* diagram = (4) ;
diagram->drawShapes( );
diagram->close ( );
(5) diagram;
}