形状类的纯虚函数

/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作    者:马广明
* 完成日期:2014 年 5 月 27 日
* 版 本 号:v1.0
* 问题描述:形状类中的纯虚函数
*/
#include <iostream>
using namespace std;
const double PI=3.14;
class Shape
{
    public:
  virtual double area() const=0;
};
class Circle:public Shape
{
    public:
    Circle(double r1):r(r1){}
    virtual double area()const
    {
        return (PI*r*r);
    }
    private:
    double r;
};
class Rectangle:public Shape
{
    public:
    Rectangle(double c1,double c2):length(c1),wide(c2){}
    virtual double area()const
    {
        return (length*wide);
    }
    private:
    double length,wide;
};
class Triangle:public Shape
{
    public:
    Triangle(double c1,double c2):length(c1),high(c2){}
    virtual double area()const
    {
        return (length*high*0.5);
    }
    private:
    double length,high;
};

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;
}

形状类的纯虚函数

时间: 06-04

形状类的纯虚函数的相关文章

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

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

C++入门经典-例8.9-抽象类,纯虚函数,创建纯虚函数

1:包含有纯虚函数的类称为抽象类,一个抽象类至少具有一个纯虚函数.抽象类只能作为基类派生出的新的子类,而不能在程序中被实例化(即不能说明抽象类的对象),但是可以使用指向抽象类的指针.在程序开发过程中并不是所有代码都是由软件构造师自己写的,有时候需要调用库函数,有时候分给别人写.一名软件构造师可以通过纯虚函数建立接口,然后让程序员填写代码实现接口,而自己主要负责建立抽象类. 2:纯虚函数 纯虚函数是指被标明为不具体实现的虚成员函数,它不具备函数的功能.许多情况下,在基类中不能给虚函数一个有意义的定

C++ 纯虚函数与抽象基类

在C++ 中,虚函数可以很好的实现多态,然而也有一定的局限,这个局限在于,虚函数必须在基类中定义,哪怕是空的实现. 例如下面这段代码编译时就会出错: class Base { virtual void print(); }; class Derived:Base { void print() { cout << "Derived" <<endl; } }; 因为Base类中的虚函数print()没有定义. 而在实际编程时我们往往会遇到无法给基类的函数定义的情况,

纯虚函数与虚基类

纯虚函数 1.定义 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法.在基类中实现纯虚函数的方法是在函数原型后加"=0" virtual void funtion()=0: 虚函数的定义是:virtual void funtion(): 2.引入原因: 1.为了方便使用多态特性,我们常常需要在基类中定义虚函数. 2.但在很多情况下,基类本身生成对象是不合情理的.例如,动物作为一个基类可以派生出老虎.孔雀等子类,但动物本身生成对象明显不合常理.

C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类

类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. 1 //单继承的定义 2 class B:public A 3 { 4 < 派生类新定义成员> 5 }; 6 //多继承的定义 7 class C:public A,private B 8 { 9 < 派生类新定义成员> 10 }; 我们这篇主要说单继承. 派生类共有三种C++类继承方式: 公有继承(public) 基类的公有成员和保护成

C++ 类在继承中虚函数、纯虚函数、普通函数,三者的区别

1.虚函数(impure virtual) C++的虚函数主要作用是"运行时多态",父类中提供虚函数的实现,为子类提供默认的函数实现. 子类可以重写父类的虚函数实现子类的特殊化. 如下就是一个父类中的虚函数: class A { public:     virtual void out2(string s)     {         cout<<"A(out2):"<<s<<endl;     } }; 2.纯虚函数(pure

纯虚函数与抽象基类

这一节我们主要介绍一下抽象基类与纯虚函数的关系 首先,我们来看看纯虚函数 1.纯虚函数的定义   纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法.在基类中实现纯虚函数的方法是在函数原型后加"=0".如下     virtual void funtion()=0 2.定义纯虚函数的目的和意义 定义纯虚函数是为了实现一个接口,起到一个规范的作用.纯虚函数的意义在于:让所有的类对象(主要是派生类对象)都可以执行纯虚函数的动作,但类无法为纯虚函数提供

&lt;C++&gt; 类(3):初始化列表 常函数和常量对象 虚函数与多态(包括纯虚函数)

一.初始化列表(初始化列表中必须有的两个内容) 1.类中const的成员变量: ①特点:不能修改 必须初始化 在构造函数后面加冒号 格式为:":变量名(值)" 也就是说 常量必须在初始化列表中初始化 ②执行顺序:构造函数先执行初始化列表 然后执行函数中的内容 1 #include<iostream> 2 using namespace std; 3 4 class CPerson 5 { 6 public: 7 const int a; 8 public: 9 CPerso

C++ Primer 学习笔记_34_面向对象编程(5)--虚函数与多态(二):纯虚函数、抽象类、虚析构函数、动态创建对象

C++ Primer 学习笔记_34_面向对象编程(5)--虚函数与多态(二):纯虚函数.抽象类.虚析构函数.动态创建对象 一.纯虚函数 1.虚函数是实现多态性的前提 需要在基类中定义共同的接口 接口要定义为虚函数 2.如果基类的接口没办法实现怎么办? 如形状类Shape 解决方法 将这些接口定义为纯虚函数 3.在基类中不能给出有意义的虚函数定义,这时可以把它声明成纯虚函数,把它的定义留给派生类来做 4.定义纯虚函数: class <类名> { virtual <类型> <函