设计一个基类 Shape 包含成员函数 Show( ),将 Show()声明为纯虚函 数。Shape 类公有派生矩形类 Rectangle 和圆类 Circle,分别定义 Show()实现 其主要几何元素的显示。使用抽象类 Shape 类型的指针,当它指向某个派生类的 对象时,就可以通过它访问该对象的虚成员函数 Show( )。
int main() // 主函数main()
{
Shape *p; // 抽象基类Shape指针
p = new Circle(1); // p指向圆对象
p->Show(); // 显示主要几何元素
delete p; // 释放临时对象
p = new Rectangle(1, 2); // p指向矩形对象
p->Show(); // 显示主要几何元素
delete p; // 释放临时对象
system("PAUSE"); // 调用库函数system( ),输出系统提示
return 0; // 返回值, 返回操作系统
}
参考代码:
#include<iostream>
using namespace std;
const double PI = 3.1415926;
class Shape
{
public:
virtual ~Shape() {}
virtual void Show()const = 0;
};
class Rectangle :public Shape
{
private:
double height;
double width;
public:
Rectangle(double h, double w) :height(h), width(w) {}
void Show()const
{
cout << "矩形:" << endl;
cout << "高:" << height << endl;
cout << "宽:" << width << endl;
cout << "周长:" << 2 * (height + width)<<endl;
cout << "面积:" << height * width << endl << endl;
}
};
class Circle :public Shape
{
private:
double radius;
public:
Circle(double r) :radius(r) {}
void Show()const
{
cout << "圆形:" << endl;
cout << "半径:" << radius << endl;
cout << "周长:" << 2 * PI * radius << endl;
cout << "面积:" << PI * radius * radius << endl << endl;
}
};
int main() // 主函数main()
{
Shape* p; // 抽象基类Shape指针
p = new Circle(1); // p指向圆对象
p->Show(); // 显示主要几何元素
delete p; // 释放临时对象
p = new Rectangle(1, 2); // p指向矩形对象
p->Show(); // 显示主要几何元素
delete p; // 释放临时对象
system("PAUSE"); // 调用库函数system( ),输出系统提示
return 0; // 返回值, 返回操作系统
}