定义一个shape类派生出Rectangle类和Circle类计算它们各自的面积Area():
运行图片:
代码段:
#include<iostream>
const double pi = 3.1415;
using namespace std;
class shape//此处为基类抽象类
{
public:
virtual double Area() = 0;//声明一个纯需函数实现多态性
};
class Rectangle :public shape//公有继承shape类
{
public:
Rectangle(double a, double b)//定义一个构造函数来传递输入的长方形的长和宽
{
wid = a;
len = b;
}
double Area()//此处实现多态性重写虚函数
{
return wid * len;
}
private:
double wid, len;
};
class Circle :public shape//圆类公有继承shape类
{public:
Circle(int a):r(a){}//使用构造函数的初始化列表实现半径的初始化
double Area()
{
return pi * r * r;
}
private:
int r;
};
double test(shape& a)//定义一个函数传的参数为类的引用不使用创建对象是因为能节省空间
{
return a.Area();
}
int main()
{
double a, b;
int d;
cout << "请输入长方形的长和宽:" << endl;
cin >> a >> b;
Rectangle r(a, b);
cout << "长方形的面积为:" << test(r) << endl;//调用test()函数能实现调用Area()纯虚函数函数实现多态性计算长方形的面积
cout << "输入圆的半径:" << endl;
cin >> d;
Circle c(d);
cout << "圆的面积为:" << test(c) << endl;//计算圆的面积并输出出来
return 0;
}
这一次我加的注释是不是能比较简单易懂呢?
也不知道我的注释对不对不对的话希望看到的大佬能指出