格式
class类名
{
public:
……
virtual 返回值类型 函数名( 参数表 ) = 0; //纯虚函数
……
};
#include <iostream> // 编译预处理命令
#include <string> // 编译预处理命令
using namespace std; // 使用命名空间std
/********* Begin *********/
// 声明形状类Shape
class Shape
{
public:
virtual string GetName() const = 0; // 返回某形状的名字的纯虚函数
virtual double GetArea() const = 0; // 返回某形状的面称的纯虚函数
};
// 声明矩形类Rectangle
class Rectangle: public Shape
{
private:
double width; // 宽
double height; // 长
public:
// 公有函数
Rectangle(double w, double h): width(w), height(h) {} // 构造函数
string GetName() const; // 返回矩形的名字
double GetArea() const; // 返回矩形的面称
};
// 定义矩形类的成员函数
string Rectangle::GetName() const // 返回矩形的名字
{
return "矩形";
}
// 定义矩形类Rectangle的成员函数GetArea()
double Rectangle::GetArea() const // 返回矩形的面积
{
return width*height;
}
// 声明圆形类Circle
class Circle: public Shape
{
private:
double radius; // 半径
public:
// 公有函数
Circle(double r): radius(r) {} // 构造函数
string GetName() const; // 返回矩形的名字
double GetArea() const; // 返回矩形的面称
};
// 定义圆形类Circle的成员函数
string Circle::GetName() const // 返回圆形的名字
{
return "圆形";
}
// 定义圆形类Circle的成员函数GetArea()
double Circle::GetArea() const // 返回圆形的面积
{
return 3.14*radius*radius;
}
void ShowArea(const Shape &sp) // 显示相关图形的面积
{
cout<<sp.GetName()<<"的面积为"<<sp.GetArea()<<endl;
}