永发信息网

懂c++的帮帮忙。。。

答案:1  悬赏:20  手机版
解决时间 2021-04-21 04:23

#include <iostream>
using namespace std;
class Shape
{
public:
Shape(){}
virtual ~Shape(){}
virtual long GetArea()=0;
virtual void Draw()=0;
};
void Shape::Draw()
{
cout<<"Abstract drawing mechanism!\n";
}
class Circle:public Shape
{
public:
Circle(int radius):itsRadius(radius){}
virtual ~Circle(){}
long GetArea(){return 3.14*itsRadius*itsRadius;}
long GetPrim(){return 2*3.14*itsRadius;}
void Draw();
private:
int itsRadius;
int itsCircumference;
};
void Circle::Draw()
{
cout<<"Circle drawing routine here!\n";
Shape::Draw();
}
class rectangle:public Shape
{
public:
rectangle(int len,int width):
itsLength(len),itsWidth(width){}
virtual ~rectangle(){}
long GetArea(){return itsLength*itsWidth;}
long GetPerim(){return 2*itsLength+2*itsWidth;}
virtual int GetLength(){return itsLength;}
virtual int GetWidth(){return itsWidth;}
void Draw();
private:
int itsWidth;
int itsLength;
};
void rectangle::Draw()
{
for (int i=0;i<itsLength;i++)
{
for (int j=0;j<itsWidth;j++)
{
cout<<"x";
}
cout<<"\n";
}
Shape::Draw();
}
class Square:public rectangle
{
public:
Square(int len);
Square(int len,int width);
virtual ~Square(){}
long GetPerim(){return 4*GetLength();}
};
Square::Square(int len):
rectangle(len,len)
{}

Square::Square(int len,int width):
rectangle(len,width)
{
if (GetLength()!=GetWidth())
{
cout<<"Error,not a square... a Rectangle??\n";
}

}
int main()
{
int choice;
bool fQuit=false;
Shape *sp;
while (fQuit==false)
{
cout<<"(1)Circle (2)Rectangle (3)Square (0)Quit:";
cin>>choice;

switch (choice)
{
case 1:sp=new Circle(5);
break;
case 2:sp=new rectangle(4,6);
break;
case 3:sp=new Square(5);
break;
default:fQuit=true;
break;
}
if (fQuit==false)
{
sp->Draw();
delete sp;
cout<<endl;
}
}
return 0;
}

我真想不明白,Draw函数是怎么调用的。。。。

请高手帮忙解说,谢谢。。。。。

最佳答案
square和rectangle公用一个draw函数,因为画的方法都是一样的,shapre::draw()是调用基类的draw函数,circle里那个draw这样调用估计是console下不方便画圆吧,所以只做个示范。大概就是示范了下抽象基类和虚函数调用,没什么特别的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
邵记烧腊快餐店在什么地方啊,我要过去处理事
DNF加施放速度的戒指有哪几种
在凯里哪里有德尔惠运动鞋专卖店
当海员的利弊~?
富宁县卫生检测中心地址有知道的么?有点事想
人跟人之间什么最平等?
你怀宝宝的时候每天都上网,你的宝宝现在智力
QQ如何解除锁定?
田阳哪里有学拉丁舞?
怎么有些人说 广东是没有冬季的?
求一个韩国动画片《千年狐》的种子
广昌到南丰有多少公里,江西省抚州市乐安县,
永盛种子门市部在哪里啊,我有事要去这个地方
被罚蹲起 怎么能尽快恢复正常?
矩形面积公式?
推荐资讯
写柳体字,要用什么样的毛笔比较好?
青浦地区有做蜂鸣器的电子厂吗?
在佛山南海地区没有技术和文化能找到工作吗
DNF装备被盗了怎么找回?
中国其它地方也有煤矿为何就山西煤矿整合呢
晶莹的宝石是光源吗
贵州六禾汇商贸有限公司我想知道这个在什么地
谁用QB卡(10元的)换世纪天成的10
那个网站的电影支持本地下载?
昌盛纯天然农副产品在什么地方啊,我要过去处
关于下冰雹的优美句子,形容冰雹的诗句
为什么地铁过站了不能下车
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?