📄 18-11.txt
字号:
/* 范例:18-11 */
#include <iostream.h>
class Shape /* 画形状类,在多态的应用上提供单一(统一)接口 */
{
public:
virtual void Draw() /* #1 画任意形状 */
{
cout <<"不知画何形状" <<endl;
}
};
class Circlec:public Shape /* 画圆形类 */
{
public:
void Draw() /* 画圆形 */
{
cout <<"画圆形" <<endl;
}
};
class Square:public Shape /* 画方形类 */
{
public:
void Draw() /* 画方形 */
{
cout <<"画方形" <<endl;
}
};
class Star:public Shape /* 画星形类 */
{
public:
void Draw() /* 画星形 */
{
cout <<"画星形" <<endl;
}
};
class Triangle:public Shape /* 画三角形类 */
{
public:
void Draw() /* 画三角形 */
{
cout <<"画三角形" <<endl;
}
};
void main(void)
{
Shape *cShape = new Shape; // #2
cout <<"请输入要画的形状(1)圆形(2)方形(3)星形(4)三角形...:";
int num;
cin >>num;
switch (num)
{
case 1:
delete cShape;
cShape= new Circlec; /* 使cShape可以操作改写的Circlec::Draw() */
break;
case 2:
delete cShape;
cShape= new Square; /* 使cShape可以操作改写的Square::Draw() */
break;
case 3:
delete cShape;
cShape= new Star; /* 使cShape可以操作改写的Star::Draw() */
break;
case 4:
delete cShape;
cShape= new Triangle; /* 使cShape可以操作改写的Triangle::Draw() */
}
cShape->Draw(); /* 调用实际对应的虚拟成员函数 */
delete cShape;
getchar();
}
程序执行结果:
请输入要画的形状(1)圆形(2)方形(3)星形(4)三角形...:3
画星形
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -