十四周项目二

来源:互联网 发布:淘宝怎么搜索gta5 编辑:程序博客网 时间:2024/05/01 13:44
/*  * 程序的版权和版本声明部分:  * Copyright (c) 2013, 烟台大学计算机学院  * All rights reserved.  * 文件名称:test.cpp  * 作    者:李果  * 完成日期:2013 年 5月 29日  * 版 本 号:v1.0  * 对任务及求解方法的描述部分: * 输入描述:无  * 问题描述: * 程序输出:“”  * 问题分析:略 * 算法设计:略  */  #include <iostream>   using namespace std;  class Shape  {  public:  virtual double area()=0;  //=0!思想是在基类里的纯虚函数里面声明一个函数(=0),在派生类中同名函数里用不同的方式定义};  class Circle:public Shape  {  public:  Circle(double r):radius(r) {}                              virtual double area() {  return 3.14*radius*radius;  };   protected:  double radius;                                                 };  class Rectangle:public Shape  {  public:  Rectangle(double w,double h):width(w),height(h) {}           virtual double area() {  return width*height;  }  protected:  double width,height;                                           };  class Triangle:public Shape  {  public:  Triangle(double w,double h):width(w),height(h) {}            virtual double area()  {  return 0.5*width*height;   }  protected:  double width,height;                                       };  int main()  {  Circle c1(12.6),c2(4.9);   Rectangle r1(4.5,8.4),r2(5.0,2.5);Triangle t1(4.5,8.4),t2(3.4,2.8); Shape *pt[6]= {&c1,&c2,&r1,&r2,&t1,&t2}; //定义一个基类的对象指针,该对象指向派生类的对象double areas=0.0;  for(int i=0; i<6; i++)  {  areas=areas + pt[i]->area();  }  cout<<"totol of all areas="<<areas<<endl;     return 0;  }  

原创粉丝点击