CPP学习之——抽象类实例(16.6)

一 概述

在了解了可以用纯虚函数来讲某个类说明为抽象类后,本节我们接着又利用纯虚函数来写一个求面积的实例。

二 分析

  • 由于抽象类可以当做接口类使用,所以使继承的派系层次更加分明,比如说人类必须拥有几个基本特征(纯虚函数)才可看做是人类,例如有文化、能直立行走等,这样就与兽类严格地区分开来

三 示例演示及结果输出

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)圆
请选择: