c++ 虚函数 纯虚函数 抽象类

   虚函数:

        声明虚函数的方法是在基类的成员函数原型前加上关键字virtual。简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。

   其格式如下:

只需改变基类

class  类名

{......

virtual 类型 函数名 (参数表):

.......

};

纯虚函数:

  1. 在基类中只声明虚函数而不给出具体的函数定义体,将它的具体定义放在各派生类中,称此虚函数为纯虚函数。
  2. 通过该基类的指针或引用就可以调用所有派生类的虚函数,基类只是用于继承,仅作为一个接口,具体功能在派生类中实现。
  3. 形式:

          virtual 类型 函数名(参数表)=0;

抽象类:

      带有纯虚函数的类成为抽象类:

class 类名

{

virtual 类型 函数名(参数表)=0;//纯虚函数

..........

};

注意:

  • 不能声明抽象类的对象,但可以声明指向抽象类的指针变量和引用变量。
  • 引入抽象类的目的,主要是为了能将相关类组织在一个类继承结构中,并通过抽象类来为这些相关类提供统一的操作接口。

举例说明:

声明一个动物类

 

#ifndef Animal_H
#define Animal_H

#include <iostream>
using namespace std;
class Animal
{
public:
    virtual  void cry()=0;
    virtual void action()=0;
    //{cout<<"zooooo"<<endl;}

};
#endif

 

声明一个猫类继承与动物类

 

 

#include "animal.h"


class Cat:public Animal
{
public:
    void cry(){cout<<"miaomiao"<<endl;}
    void action(){cout<<"pashu"<<endl;}

};

 

声明一个Dog类继承与Aniaml类

 

#include "animal.h"


class Dog:public Animal
{
public:
    void cry(){cout<<"wangwang"<<endl;}
    void action(){cout<<"zuandong"<<endl;}
};

 

mian类

#include "animal.h"
#include "cat.h"
#include "dog.h"

void display(Animal &p);

void main()
{
    //Animal a;
    Cat c;
    Dog d;
    //c=new Cat();
    //d=new Dog();


    //display(a);
    display(c);
    display(d);
    //c.cry();

}
void display(Animal &p)
{
    p.cry();
    p.action();

}

 

 

 

 

 

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

posted on 2012-12-12 13:27  主人的成长  阅读(190)  评论(0编辑  收藏  举报

导航