纯虚函数和抽象类

原创 2018年04月17日 10:13:45

这里写图片描述
这里写图片描述

#include<iostream>
using namespace std;

//图形类
//如果一个类拥有纯虚函数,就称这个类是一个抽象类。
//不管这个类中有没有成员属性,只要这个类有纯虚函数,就是一个抽象类,抽象类是不能实例化的
class Shape
{
public:
    //求图形面积的方法
    //表示图形类声明一个方法getArea(),她是一个纯虚函数,没有函数的实现
    //接口
    virtual double getArea() = 0;//=0 就是纯虚函数的语法,没有其他含义

    int a;
    int b;
};

//正方形:
//如果一个普通类,继承拥有纯虚函数的类,如果不重写纯虚函数,依然是个抽象类。
//依然不能被实例化,若想实例化,必须要重写这个父类中的所有纯虚函数

class Rect :public Shape
{
public:
    Rect(int a)
    {
        this->a = a;
    }
    virtual double getArea()
    {
         cout << "正方形面积" << endl;
        return a*a;
    }

private:
    int a;//正方形的边长
};

//圆类
class Circle :public Shape
{
public:
    Circle(int r)
    {
        this->r = r;
    }

    virtual double getArea()
    {
         cout << "圆形面积" << endl;
        return 3.14*r*r;
    }
private:
    int r;
};

//三角形类
class Tri :public Shape
{
public:
    Tri(int a,int h)
    {
        this->a = a;
        this->h = h;
    }
    virtual double getArea()
    {
        cout << "三角形面积" << endl;
        return 0.5*a*h;
    }
private:
    int a;//底
    int h;//高
};


//面向抽象类写的一个架构函数
void printArea(Shape *sp)//多态
{
    cout << sp->getArea() << endl;
}
//业务层,面向抽象类编程
int main()
{
    //main中所有使用的变量类型都是抽样类的Shape的类型
    Shape *sp1 = new Rect(10);
    Shape *sp2 = new Circle(20);
    Shape *sp3 = new Tri(10,20);

    printArea(sp1);
    printArea(sp2);
    printArea(sp3);
    return 0;
}

总结:

如果一个类拥有纯虚函数,就称这个类是一个抽象类。

不管这个类中有没有成员属性,只要这个类有纯虚函数,就是一个抽象类,抽象类是不能实例化的。

如果一个普通类,继承拥有纯虚函数的类,如果不重写纯虚函数,依然是个抽象类,依然不能被实例化,若想实例化,必须要重写这个父类中的所有纯虚函数。

版权声明:如需转载,请注明出处。 https://blog.csdn.net/Young__Fan/article/details/79970792

什么时候用有状态session bean,什么时候用无状态session bean

什么时候用有状态session bean,什么时候用无状态session bean最近,有关于无状态的许多大惊小怪。无状态的缺陷常常被夸大,它的优点也一样。许多无状态的支持者盲目的宣称无状态能带来更大...
  • xxcc
  • xxcc
  • 2001-12-14 09:25:00
  • 1737

C++学习篇——纯虚函数和抽象类

纯虚函数是一种特殊的虚函数,它的一般格式如下:     class     {         virtual ()=0;         …     };     在许多情况下...
  • yansmile1
  • yansmile1
  • 2016-04-13 23:03:24
  • 637

C++虚函数和纯虚函数和抽象类

C++虚函数和纯虚函数和抽象类分析
  • x_r_su
  • x_r_su
  • 2016-08-31 13:31:53
  • 971

纯虚函数 抽象类

虚函数是C++多态的一种表现 ,例如:子类继承了父类的一个函数(方法),而我们把父类的指针指向子类,则必须把父类的该函数(方法)设为virturl(虚函数)。 使用虚函数,我们可以灵活的进行动态绑定,...
  • stevenzhang1986
  • stevenzhang1986
  • 2011-07-04 15:10:34
  • 2384

虚函数、纯虚函数、抽象类、抽象方法和接口

首先讲下自己最近的电话面试遇到的相关问题。1、多态的两种实现方式?2、虚函数与纯虚函数的区别,如何使用这两种方式?3、接口和抽象类的关系?由这两个问题开始深入的理解一下虚函数,纯虚函数以及抽象类和接口...
  • feihaixin
  • feihaixin
  • 2015-02-15 14:44:05
  • 846

虚函数和纯虚函数 动态绑定

1.虚函数 纯虚函数: 1.虚函数和纯虚函数可以定义在同一个类中,含有纯虚函数的类被称为抽象类,而只含有虚函数的类不能被称为抽象类。 2.虚函数可以被直接使用,也可以被子类重载以后,以多态的形式调...
  • climb_up
  • climb_up
  • 2013-10-04 11:16:16
  • 716

纯虚函数和抽象类的实例

  • 2015年04月14日 19:33
  • 1.67MB
  • 下载

C++与C#中的虚函数、纯虚函数、抽象类的对比

一、C++中            1、虚函数(virtual)     第一次引入虚拟函数的基类时,必须在类声明中指定virtual关键字。如果虚函数的定义放在类的外面,则不能再次指定关键字vi...
  • u010168160
  • u010168160
  • 2014-04-05 17:48:16
  • 4270

C++里的抽象类和纯虚函数

C++里的抽象类和纯虚函数在C++中,含有至少一个纯虚函数的类是抽象类,但是注意在C++中没有abstract这个关键字,所以C++里面的抽象类无需添加abstract这个单词。抽象类不可以直接实例化...
  • Lv_Victor
  • Lv_Victor
  • 2016-09-12 09:57:45
  • 507

虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承

虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承 虚函数:虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。是C++中多态...
  • fanbird2008
  • fanbird2008
  • 2013-11-21 17:07:29
  • 684
收藏助手
不良信息举报
您举报文章:纯虚函数和抽象类
举报原因:
原因补充:

(最多只允许输入30个字)