一.前言

如上

二.内容

编写一个程序,定义抽象基类Shape,由它派生出5个派生类:Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。用虚函数分别计算几种图形面积,并求它们之和。要求用基类指针数组,使它每一个元素指向一个派生类对象。

三.代码

#include<iostream>
using namespace std;
class Shape{//抽象类Shape public: virtual double area() const=0;//求面积
}; class Circle:public Shape{//公用派生类 public:Circle(double r);//构造函数 virtual double area()const;//求圆的面积private:double radius;//半径
};Circle::Circle(double r){//构造函数 radius=r;
} double Circle:: area()const{//求圆的面积return 3.14159*radius*radius;
}class Rectangle:public Shape{//公用派生类Rectangle public:Rectangle(double a,double b);//构造函数virtual double area()const;//求矩形的面积private:double x;//矩形的长double y;//矩形的宽
};Rectangle::Rectangle(double a,double b){//构造函数x=a;y=b;
}double Rectangle:: area()const{//求矩形的面积return x*y;
}class Triangle:public Shape{//公用派生类Triangle public:Triangle(double w,double h);//构造函数virtual double area()const;//求三角形的面积private://三角形的三边 double width;//宽 double height;//高
};Triangle::Triangle(double w,double h){//构造函数width=w;height=h;
}double Triangle:: area()const{//求三角形的面积return width*height/2;
}class Square:public Shape{//公用派生类Square public:Square(double a1);//构造函数virtual double area()const;//求正方形的面积private:double a;//边长};Square::Square(double a1):a(a1){//构造函数
} double Square::area()const{//求正方形的面积return a*a;
}class Trapezoid:public Shape{//公用派生类Trapezoid梯形 public:Trapezoid(double t1,double u1,double h);//构造函数virtual double area()const;//求梯形的面积private:double t;//上底double u;//下底double height;//高
};Trapezoid::Trapezoid(double t1,double u1,double h){//构造函数t=t1;u=u1;height=h;
}double Trapezoid::area()const{//求梯形的面积return (t+u)*height/2;
}int main(){Circle c(12.6);Square s(3.5);Rectangle r(4.5,8.4);Trapezoid t(2.0,4.5,3.2);Triangle t1(4.5,8.4);Shape* shapes[5]={&c,&s,&r,&t,&t1}; double sum=0;//图形面积和int i;//循环变量for(i=0;i<5;i++){sum=sum+shapes[i]->area() ;}cout<<"总面积:"<<sum<<endl;return 0;
}

c++程序设计中多态与虚函数知识点相关推荐

  1. C++中多态与虚函数的学习例子

    多态(Polymorphism):在面向对象语言中,接口的多种不同的实现方式.也可以这样理解:在运行时,可以基类的指针来调用实现派生类中的方法.简单的一句话:允许将子类类型的指针赋值给父类类型的指针. ...

  2. c++程序设计中的多态与虚函数知识点

    一.前言 如上 二.内容 编写一个程序,声明抽象基类Shape,由它派生出3个派生类:Circle(圆形).Rectangle(矩形).Triangle(三角形),用一个函数printArea输出以上 ...

  3. PKU C++程序设计实习 学习笔记3 多态与虚函数

    第六章 多态与虚函数 6.1 多态和虚函数的基本概念 引言 多态是面向对象程序设计里面非常重要的这个机制.它能很有效的提高程序的可扩充性. 有些程序设计语言有被对象继承的概念,但是没有多态的概念,那这 ...

  4. 复习笔记(五)——C++多态和虚函数

    静态绑定与动态绑定 静态绑定: -编译时就能确定一条函数调用语句要调用的函数 -在程序编译时多态性体现在函数和运算符的重载上 动态绑定: -运行时才能确定函数调用语句调用的函数 -程序运行时的多态性通 ...

  5. C++面试题:多态,虚函数,纯虚函数

    多态:是对于不同对象接收相同消息时产生不同的动作.C++的多态性具体体现在运行和编译两个方面:在程序运行时的多态性通过继承和虚函数来体现: 在程序编译时多态性体现在函数和运算符的重载上: 开课吧广场C ...

  6. C++学习12:C++多态、虚函数、虚析构函数、纯虚函数、抽象类

    一 多态概述 C++中的多态分为静态多态和动态多态.静态多态是函数重载,在编译阶段就能确定调用哪个函数.动态多态是由继承产生的,指同一个属性或行为在基类及其各派生类中具有不同的语义,不同的对象根据所接 ...

  7. C++中类的多态与虚函数的使用(转)

    C++中类的多态与虚函数的使用 http://www.cnblogs.com/fangyukuan/archive/2010/05/30/1747449.html 类的多态特性是支持面向对象的语言最主 ...

  8. C++中类的多态与虚函数的使用

    C++中类的多态与虚函数的使用 http://www.cnblogs.com/fangyukuan/archive/2010/05/30/1747449.html 类的多态特性是支持面向对象的语言最主 ...

  9. C++多态,虚函数,纯虚函数

    多态:是对于不同对象接收相同消息时产生不同的动作. C++的多态性具体体现在运行和编译两个方面: 在程序运行时的多态性通过继承和虚函数来体现: 在程序编译时多态性体现在函数和运算符的重载上: 虚函数: ...

最新文章

  1. mysql unrecognized_service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误...
  2. 科普长文揭秘生命为何会具有主观能动性
  3. hdu 1796 How many integers can you find 容斥定理
  4. 给jdk写注释系列之jdk1.6容器(1):ArrayList源码解析
  5. ASA/PIX: Load balancing between two ISP - options
  6. 《数据库SQL实战》获取所有员工当前的manager
  7. java面试总结(一)-----如何准备Java初级和高级的技术面试
  8. nginx配置多个域名_Nginx配置多个网站/项目的简单方式
  9. 设置背景色为渐变色 css
  10. Linux环境下安装Hadoop(完全分布式)
  11. Atitit.电脑图片与拍摄图片的分别
  12. 台服海岛纪元显示无法连接服务器,打开海岛纪元提示网络异常或者连接不上
  13. java变量表述_下列关于Java变量的描述,错误的是:_学小易找答案
  14. 物联网的体系结构和关键技术
  15. 生前个个说恩深,死后人人欲扇魂。画虎画皮难画骨,知人知面不知心。
  16. IDEA使用插件SequenceDiagram、RestfulToolkit
  17. 推荐系统多场景联合建模经验
  18. Android实现类似股票列表联动
  19. 这篇文章就是要让你入门java多线程【多线程入门】
  20. SQL Server 2008 导出、导入包含数据的脚本 保存脚本法

热门文章

  1. OpenCV中Canny边缘检测
  2. 绕固定坐标轴旋转与绕自身坐标轴旋转一致性证明
  3. 导师没有教你的“潜规则”
  4. 蜜蜂性别调控又有新机制?
  5. tomcat配置url跳转_web和tomcat的区别
  6. 格雷码、二进制码、BCD编码
  7. python 第一行 报错_初学Python-只需4步,爬取网站图片
  8. layui左侧三级菜单2.0
  9. o oia ospf 路由优先_CCNP理论之OSPF协议(二)
  10. Qt文档阅读笔记-Broadcast Sender Example解析