一 概述
在了解了可以用纯虚函数来讲某个类说明为抽象类后,本节我们接着又利用纯虚函数来写一个求面积的实例。
二 分析
- 由于抽象类可以当做接口类使用,所以使继承的派系层次更加分明,比如说人类必须拥有几个基本特征(纯虚函数)才可看做是人类,例如有文化、能直立行走等,这样就与兽类严格地区分开来
三 示例演示及结果输出
3.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| #include<iostream> using namespace std; class Shape { public: virtual double area()=0; }; class Trigon: public Shape {
protected: double h, w; public: Trigon(double H, double W) { h = H; w = W; } double area() {return h * w / 2;} }; class Square: public Trigon {
public: Square(double H, double W) :Trigon(H, W) {} double area() {return h * w;} }; class Circle: public Shape { protected: double radius; public: Circle(double r) {radius = r;} double area() {return radius * radius * 3.14;} }; int main() { Shape *p; int choice = 0; while (true) { bool quit = false; cout << "(0)退出(1)三角形(2)正方形(3)圆" << endl; cout << "请选择:"; cin >> choice; switch (choice) { case 0: quit = true; break; case 1: p = new Trigon(5.0, 6.0); cout << "三角形的面积为:" << p->area() << endl; break; case 2: p = new Square(70.0, 70.0); cout << "正方形的面积为:" << p->area() << endl; break; case 3: p = new Circle(9.0); cout << "圆的面积为:" << p->area() << endl; break;
default: cout << "请输入0到3之间的数字。"; break; } if (choice < 4 && choice > 0) { delete p; } if (quit) { break; } } return 0; }
|
3.2 输出结果
1 2 3 4 5 6 7 8 9 10 11
| (0)退出(1)三角形(2)正方形(3)圆 请选择:1 三角形的面积为:15 (0)退出(1)三角形(2)正方形(3)圆 请选择:2 正方形的面积为:4900 (0)退出(1)三角形(2)正方形(3)圆 请选择:3 圆的面积为:254.34 (0)退出(1)三角形(2)正方形(3)圆 请选择:
|