最近在自学C++,主要是学习C++中的面向对象的编程,看了一下面向对象的的三大特性:封装性、继承性和多态性。但感觉要深刻理解还是要自己练习一下。下面提供的代码实现的是利用抽象类显示图形的周长和面积,这里的图形我只列举了圆、三角形和长方形,添加其他图形只需要继续添加shape的派生类就好。

这里的父类shape是一个抽象类,提供接口,其中:

getdata():用于输入图形的信息,对于圆需要输入半径;对于三角形需要输入三条边长;对于长方形则需要输入长和宽。

circumference():用于得到各个图形的周长。

area():用于计算各个图形的面积。

print():用于输出周长和面积。

源程序如下所示:

#include "stdafx.h"
#include <iostream>//编译预处理命令,输入输出流文件
#include <fstream>
#include <iomanip>
#include <math.h>
#include <string.h>
#include <strstream>
using namespace std;
class shape
{public:virtual void getdata()=0;virtual double circumference()=0;virtual double area()=0;virtual void print()=0;
};
class circle:public shape
{double r;public:circle(double i=0){r=i;}virtual void getdata(){cout<<"input the information of the circle:"<<endl;cin>>r;}virtual double circumference(){return 3.14*2*r;}virtual double area(){return 3.14*r*r;}virtual void print(){cout<<"circumference:"<<circumference()<<'\t'<<"area:"<<area()<<endl;}
};
class triangle:public shape
{double x,y,z;public:triangle(double i=0,double j=0,double k=0){x=i;y=j;z=k;}virtual void getdata(){cout<<"input the information of the triangle:"<<endl;            cin>>x>>y>>z;}virtual double circumference(){return x+y+z;}virtual double area(){double s;s=(x+y+z)*(x+y-z)*(x+z-y)*(z+y-x);s=s/4;return sqrt(s);       }virtual void print(){cout<<"circumference:"<<circumference()<<'\t'<<"area:"<<area()<<endl;}
};
class rectangle:public shape
{double x,y;public:rectangle(double i=0,double j=0){x=i;y=j;}virtual void getdata(){cout<<"input the information of the rectangle"<<endl;         cin>>x>>y;}virtual double circumference(){return 2*(x+y);}virtual double area(){return x*y;}virtual void print(){cout<<"circumference:"<<circumference()<<'\t'<<"area:"<<area()<<endl;}
};
void main()
{circle s1;triangle s2;rectangle s3;shape *p;p=&s1;p->getdata();p->print();p=&s2;p->getdata();p->print();p=&s3;p->getdata();p->print();
}

程序运行如下所示:

C++中抽象类的简单使用相关推荐

  1. C#中抽象类和接口的区别

    一.抽象类:       抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...

  2. java中抽象接口_一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  3. C#中抽象类和接口的区别与使用

    一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外 ...

  4. (教学思路 C#之类五)类的分类(静态类、实例类、嵌套类、结构、简单的抽象类、简单的密封类)...

    本节课我们来学习类的扩展分类,看我的标题中就罗列出了类的分类,类按照声明方式和功能定义共分为这六种类,实例类就是我们一直在用的类,class关键字前没有其他的修饰符,之前已经有很多实例类的使用方法了, ...

  5. C#中抽象类和接口的区别与应用场景

    一直对这两个基础概念没有很好的认识,在网上发现一个我能够理解的基础概念理解,存一下,反复看. C#中抽象类和接口的区别与应用场景一. 1.抽象类:抽象类是特殊的类,只是不能被实例化;和普通类一样里面什 ...

  6. 关于Java中抽象类和接口的一点思索

    Java中抽象类和接口的一点思索 成员方法上的区别: 1. java中的抽象类可以提供成员方法的实现细节,抽象方法只能是被public和protected来修饰 配合abstract关键字,子类需要实 ...

  7. 【C# 教程系列第 12 篇】抽象类的简单实现

    这是[C# 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. 上一篇博客讲到了 C# 中的抽象类与抽象方法,对这两个概念不清楚的可以 点击此处 通过上篇博客我们会发现,使用 abstract ...

  8. 一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  9. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

最新文章

  1. if(a==1 a==2 a==3),为true,你敢信???
  2. CVPR 2021 | SquareRootBA:大场景中的平方根集束调整
  3. sqlServer MD5
  4. Linux系统学习----前言
  5. Linux编程练习 --进程间通信1--无名管道
  6. 作为硬通货的学术引用,何以统治学术圈?
  7. Ubuntu配置安装NFS服务器
  8. coreldraw凹槽_CorelDRAW教程 打造逼真静物写生油画
  9. 【OpenCV】绘制简单图形
  10. win7系统控制面板在哪打开,win7电脑打开控制面板方法
  11. 天池-新冠疫情相似句对判定大赛top6方案及源码
  12. Excel 填充间格空白单元格与最上临近非空单元格值相同
  13. c语言编程 if怎么用,C语言编程入门——if的用法
  14. 单点登录怎么整合项目_如何推销新项目:整合设计,创建登录页面并“吸引”用户...
  15. 饺子的吃法,你学会了么?
  16. lr中的lr_output_message,Lr_debug_message,Lr_error_message,Lrd_stmt,Lrd_fetch函数
  17. 从复旦危化品中学到的项目经验
  18. 看完 穿条纹睡衣的男孩 之后
  19. abs传感器电压有几伏电_汽车ABS转速传感器工作电压测量方法
  20. 可动态迁移的 mysql 架构

热门文章

  1. 05、postman批量测试
  2. 忆夕阳下的光辉,给我的父亲
  3. 【oracle工具】plsqldev美化规则文件详细解释(关键字大写,标识符小写等规则)
  4. cuda编译错误 ptxas fatal : Unresolved extern function xxxx
  5. 最新软件云测试方法你知道多少?有什么好处
  6. 买二手房和买新房-----这几年的是没差别的
  7. 目前主流的移动广告联盟有哪些呢?
  8. 3.5mm音频插头的引脚连接关系
  9. 微信小程序合集源码I(机器人聊天+仿别踩白块儿小游戏+仿步步高电子词典+仿知乎+日记+汉字拼音+转盘抽奖)
  10. IOS 世界标准时间UTC /GMT 转为当前系统时区对应的时间