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++继承——以应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长为例相关推荐

  1. java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...

    导航:网站首页 > java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 . 时间:2018-11-8 java编程 1.设计一个求圆的面积和 ...

  2. 问题 D: 求圆的面积和周长 山东科技大学oj c 语言

    题目描述 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14. 输入 输入一个浮点型数据,有效数字不会超过十进制的6位. 输出 输出为两行. 第一行为圆的面积,第二行为圆的周长,格式见sample ...

  3. C语言:求圆的面积和周长

    /*求圆的面积和周长*/ #define PI 3.14159 #include<stdio.h> void main() {float r,s,l;printf("请输入圆的半 ...

  4. java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...

    问题标题 java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题.编写一个应用程序计算圆的周长和面积,设圆的半 2019-5-23来自ip:15.196.194.53的 ...

  5. Python求圆的面积和周长

    用户输入半径,求出圆的面积和周长并输出结果,圆周率为3.14 r=float(input("请输入半径:")) area=3.14*r**2 girth=3.14*2*r prin ...

  6. JAVA 计算圆的面积和周长: 创建一个圆Circle类。为该类提供一个变量r表示半径,一个常量PI表示圆周率; * 同时为该类提供两个方法:方法一用于求圆的面积,方法二用于求圆的周长;

      插一句嘴,现在扎扎实实地把这些基础地敲一遍,理解了,可能还是会忘记.但是你最后学习的是做题的思路,而不是单纯的记代码.代码忘了再回过头来看一遍就好了,思路是别人偷不走的.[2022-9] * 思路 ...

  7. C语言基本——求圆的面积和周长

    #include <stdio.h>//求圆的面积和周长 #define PI 3.14 int main() {double r,c,s;printf("输入半径") ...

  8. 用HTML+js实现求圆的面积和周长

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  9. 求半径为r的圆的面积,周长,以及半径为r的球的体积表面积。

    * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作    者:  董万鹏 * 完成日期:2012 年10  月18  日 * 版本号: ...

最新文章

  1. .net mvc actionresult 返回字符串_.NET架构师知识普及
  2. hibernate 表关系映射详解之多对多
  3. 单模光电转换器怎么接_以太网光纤收发器怎么用?
  4. SPRING IN ACTION 第4版笔记-第二章-001-用@Autowired\@ComponentScan、@Configuration、@Component实现自动装载bean...
  5. 物流货代公司管理系统
  6. mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?
  7. python3.6安装pyspider
  8. 【漏洞公告】高危:Windows系统 SMB/RDP远程命令执行漏洞
  9. 一个球绳命最后的高度哈哈
  10. 06【连词】 Conjunction
  11. 2021年全国职业院校技能大赛 “大数据技术与应用”—模拟赛题(二)
  12. DTMF通信系统设计—基于MATLAB和STM32
  13. oracle lead 方法,Oracle SQL之lag()和lead()函数使用详解
  14. css改变鼠标图片大小,CSS实现鼠标经过图片上图片等比缩放效果(代码实例)
  15. 快速使用Android串口
  16. ICLR 2022 | 绝艺学会打麻将,腾讯AI Lab提出全新策略优化算法ACH
  17. Amazon EC2创建快照计划任务
  18. linux降级安装补丁,Adobe Shockwave Player降级安装漏洞
  19. 自然语言处理—初始自然语言处理技术—走进自然语言处理
  20. sqlserver打开或创建mdf失败

热门文章

  1. 【计算机组成原理】学了计组,CPU执行时间你肯定会算了吧
  2. POI解析Excel表格
  3. JS校验统一社会信用代码的真实性
  4. python语言程序设计习题
  5. 神经网络算法有哪几种,神经网络有哪几种算法
  6. 开关电源补偿环路设计(2):实践部分-例题
  7. MoveIt 1 源码构建: Linux
  8. 用AI说再见!“辣眼睛”的买家秀 1
  9. 编程基础——鱼龙混杂来两波
  10. 基于Token的身份验证的原理