C++继承——以应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长为例
c++中基类的继承及其使用,以圆的内接正方形和外切正方形为例
1:C++中继承的方式
C++中的继承主要分为三类:public公有继承、protected保护继承以及private私有继承,其使用范围这里不再赘述。
2:C++继承的优缺点
优点:
1、类继承是在编译时刻静态定义的,且可直接使用,
2、类继承可以较方便地改变父类的实现。
缺点:
1、因为继承在编译时刻就定义了,所以无法在运行时刻改变从父类继承的实现
2、父类通常至少定义了子类的部分行为,父类的任何改变都可能影响子类的行为
3、如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。
例子——应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长。
```cpp
#include <iostream>
#include <math.h>
using namespace std;
double pi=3.14;
class container
{public:container(double x){r=x;}virtual void area()=0;virtual void permeter()=0;protected:double r;
};
class circle:public container
{public:circle(double x):container(x){}void area(){cout<<"圆的面积是:"<<pi*r*r<<endl;}void permeter(){cout<<"圆的周长是:"<<pi*r*2<<endl;}
};
class inner_square:public container
{public:inner_square(double x):container(x){}void area(){cout<<"圆内接正方形的面积为:"<<2*r*r<<endl;}void permeter(){cout<<"圆内接正方形的周长是:"<<4*sqrt(2)*r<<endl;}
};
class out_square:public container
{public:out_square(double x):container(x){}void area(){cout<<"圆外切正方形的面积为:"<<4*r*r<<endl;}void permeter(){cout<<"圆外切正方形的周长是:"<<8*r<<endl;}
};
int main()
{container *p;circle A(1);inner_square B(1);out_square C(1);p=&A;p->area();p->permeter();p=&B;p->area();p->permeter();p=&C;p->area();p->permeter();return 0;
}
本例中,题干要求应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长。分析三个对象的关系不难发现,三个对象在创建时都绕不开圆的半径“r”,都要求计算面积以及周长,因此在基类(container)中,可以将三者进行定义,方便接下来的继承。
在继承过程中,要注意弄清不同类之间的关系,合理的使用虚基类以避免二义性。
本例的主函数采用建立一个基类指针的方式调用各类函数,这样做能够精简主函数代码,也有利于后期主函数调用的修改。本人为大二计科学生,代码及表达能力有限,文中如有错误,欢迎大家指正!
C++继承——以应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长为例相关推荐
- java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...
导航:网站首页 > java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 . 时间:2018-11-8 java编程 1.设计一个求圆的面积和 ...
- 问题 D: 求圆的面积和周长 山东科技大学oj c 语言
题目描述 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14. 输入 输入一个浮点型数据,有效数字不会超过十进制的6位. 输出 输出为两行. 第一行为圆的面积,第二行为圆的周长,格式见sample ...
- C语言:求圆的面积和周长
/*求圆的面积和周长*/ #define PI 3.14159 #include<stdio.h> void main() {float r,s,l;printf("请输入圆的半 ...
- java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...
问题标题 java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题.编写一个应用程序计算圆的周长和面积,设圆的半 2019-5-23来自ip:15.196.194.53的 ...
- Python求圆的面积和周长
用户输入半径,求出圆的面积和周长并输出结果,圆周率为3.14 r=float(input("请输入半径:")) area=3.14*r**2 girth=3.14*2*r prin ...
- JAVA 计算圆的面积和周长: 创建一个圆Circle类。为该类提供一个变量r表示半径,一个常量PI表示圆周率; * 同时为该类提供两个方法:方法一用于求圆的面积,方法二用于求圆的周长;
插一句嘴,现在扎扎实实地把这些基础地敲一遍,理解了,可能还是会忘记.但是你最后学习的是做题的思路,而不是单纯的记代码.代码忘了再回过头来看一遍就好了,思路是别人偷不走的.[2022-9] * 思路 ...
- C语言基本——求圆的面积和周长
#include <stdio.h>//求圆的面积和周长 #define PI 3.14 int main() {double r,c,s;printf("输入半径") ...
- 用HTML+js实现求圆的面积和周长
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- 求半径为r的圆的面积,周长,以及半径为r的球的体积表面积。
* Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 董万鹏 * 完成日期:2012 年10 月18 日 * 版本号: ...
最新文章
- .net mvc actionresult 返回字符串_.NET架构师知识普及
- hibernate 表关系映射详解之多对多
- 单模光电转换器怎么接_以太网光纤收发器怎么用?
- SPRING IN ACTION 第4版笔记-第二章-001-用@Autowired\@ComponentScan、@Configuration、@Component实现自动装载bean...
- 物流货代公司管理系统
- mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?
- python3.6安装pyspider
- 【漏洞公告】高危:Windows系统 SMB/RDP远程命令执行漏洞
- 一个球绳命最后的高度哈哈
- 06【连词】 Conjunction
- 2021年全国职业院校技能大赛 “大数据技术与应用”—模拟赛题(二)
- DTMF通信系统设计—基于MATLAB和STM32
- oracle lead 方法,Oracle SQL之lag()和lead()函数使用详解
- css改变鼠标图片大小,CSS实现鼠标经过图片上图片等比缩放效果(代码实例)
- 快速使用Android串口
- ICLR 2022 | 绝艺学会打麻将,腾讯AI Lab提出全新策略优化算法ACH
- Amazon EC2创建快照计划任务
- linux降级安装补丁,Adobe Shockwave Player降级安装漏洞
- 自然语言处理—初始自然语言处理技术—走进自然语言处理
- sqlserver打开或创建mdf失败