第13周项目2-纯虚函数形类家庭

写一个程序。定义一个抽象基类Shape,它是从衍生3派生类。Circle(周围)、Rectangle(矩形)、Triangle(三角)。例如,下面的main()性能。划定区域并找到一些几何。

int main()
{
    Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,參数为圆半径
    Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,參数为矩形长、宽
    Triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle类对象t1,t2,參数为三角形底边长与高
    Shape *pt[6]= {&c1,&c2,&r1,&r2,&t1,&t2}; //定义基类指针数组pt,使它每个元素指向一个派生类对象
    double areas=0.0; //areas为总面积
    for(int i=0; i<6; i++)
    {
        areas=areas + pt[i]->area();
    }
    cout<<"totol of all areas="<<areas<<endl;   //输出总面积
    return 0;
}
/*
* Copyright (c) 2015,烟台大学计算机学院
* All right reserved.
* 作者:邵帅
* 文件:Demo.cpp
* 完毕时间:2015年06月07日
* 版本:v1.0
*/
#include <iostream>
#include <string>
using namespace std;
class Shape
{
public:
    virtual double area()=0;
};
class Circle:public Shape
{
private:
    double radius;
public:
    Circle(double r):radius(r){}
    virtual double area()
    {
        return (3.14*radius*radius);
    }
};
class Rectangle:public Shape
{
private:
    double leight;
    double height;
public:
    Rectangle(double l,double h):leight(l),height(h){}
    virtual double area()
    {
        return (leight*height);
    }
};
class Triangle:public Shape
{
private:
    double underline;
    double height;
public:
    Triangle(double u,double h):underline(u),height(h){}
    virtual double area()
    {
        return (underline*height*1/2);
    }
};
int main()
{
    Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,參数为圆半径
    Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,參数为矩形长、宽
    Triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle类对象t1,t2,參数为三角形底边长与高
    Shape *pt[6]= {&c1,&c2,&r1,&r2,&t1,&t2}; //定义基类指针数组pt,使它每个元素指向一个派生类对象
    double areas=0.0; //areas为总面积
    for(int i=0; i<6; i++)
    {
        areas=areas + pt[i]->area();
    }
    cout<<"totol of all areas="<<areas<<endl;   //输出总面积
    return 0;
}

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWF5dWtvMjAxMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

@ Mayuko

版权声明:本文博主原创文章。博客,未经同意不得转载。

时间: 2024-10-16 14:57:03

第13周项目2-纯虚函数形类家庭的相关文章

第13周 程序阅读-纯虚函数

#include <iostream> using namespace std; class Base { public: virtual void Who() =0; }; class FirstDerived:public Base { public: void Who() { cout<<"F"; } }; class SecondDerived:public Base { public: void Who() { cout<<"S&

第十三周阅读程序3:纯虚函数

问题及代码: #include <iostream> using namespace std; class Base { public: virtual void Who() =0; //纯虚函数 }; class FirstDerived:public Base { public: void Who() { cout<<"F"; } }; class SecondDerived:public Base { public: void Who() { cout&l

C++学习基础十二——纯虚函数与抽象类

一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个类中含有虚函数,则必须将该类的析构函数声明为虚函数. 4.虚函数与纯虚函数的声明: virtual void draw();//虚函数 virtual void draw() = 0;//纯虚函数 5.C++中支持两种多态性: 编译时多态:通过重载函数实现. 运行时多态:通过虚函数实现. 二.Jav

【C++】C++中的虚函数与纯虚函数

C++中的虚函数 先来看一下实际的场景,就很容易明白为什么要引入虚函数的概念.假设我们有一个基类Base,Base中有一个方法eat:有一个派生类Derived从基类继承来,并且覆盖(Override)了基类的eat:继承表明ISA(“是一个”)的关系,现在我们有一个基类的指针(引用)绑定到派生类对象(因为派生类对象是基类的一个特例,我们当然可以用基类指针指向派生类对象),当我们调用pBase->eat()的时候,我们希望调用的是Derived类的eat,而实际上调用的是Base类的eat,测试

C++ 虚函数 、纯虚函数、接口的实用方法和意义

也许之前我很少写代码,更很少写面向对象的代码,即使有写多半也很容易写回到面向过程的老路上去.在写面向过程的代码的时候,根本不管什么函数重载和覆盖,想到要什么功能就变得法子的换个函数名字,心里想想:反正函数重载本质也就是入栈了两个不同的函数. 回过头来讲,让我了解标题这三个概念的实际用处,还是在于我这第四次重写毕业论文的代码,将它改写成面向对象的时候,才理解的.在面向对象设计的过程中, 类是从抽象逐渐具体起来的,父类可以是非常非常抽象的东西,而最终实例化的子类就非常具体了.在这个继承的过程中,不断

抽象类 纯虚函数

1 #include <iostream> 2 using namespace std; 3 /************************************************************************/ 4 /*抽象类不能定义对象,为了强调一个类为抽象类,可将该类的构造函数说明为保护的访问控制权限 5 抽象类只用作基类,其纯虚函数的实现由派生类给出 6 如果派生类定义了纯虚函数,该派生类就可以当做具体类,不定义仍然是抽象类 7 /************

Hello,C++(5)纯虚函数和抽象类

纯虚函数和抽象类 下面通过一个例子来说明纯虚函数的定义方法 在这个类当中,我们定义了一个普通的虚函数,并且也定义了一个纯虚函数.那么,纯虚函数是什么呢??从上面的定义可以看到,纯虚函数就是没有函数体,同时在定义的时候,其函数名后面要加上“= 0”. 纯虚函数的实现原理 本节从虚函数表的角度来说明纯虚函数的实现原理. 上面就是我们在前面课程讲到的多态的实现原理,在讲这一部分的时候,讲到了虚函数表以及虚函数表指针.如果我们定义了Shape这样的类,那么,Shape类当中,因为有虚函数和纯虚函数,所以

C++:抽象基类和纯虚函数的理解

转载地址:http://blog.csdn.net/acs713/article/details/7352440 抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较上层. ⑴抽象类的定义: 称带有纯虚函数的类为抽象类. ⑵抽象类的作用: 抽象类的主要作用是将有关的操作作为结果接口组织在一个继承层次结构中,由它来为派生类提供一个公共的根,派生类将具体实现在其基类中作为接口的操作.所以派生类实际上刻画了一组子类的操作接口的通用语义,这些语义也传给子类,子类可以具体实现这些

虚函数和纯虚函数的作用与区别

http://blog.csdn.net/xwpc702/article/details/8670025 虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数.class Cman{public:virtual void Eat(){……};void Move();private:};class C