纯虚函数与抽象类

博客介绍了纯虚函数,它是基类中无定义、要求派生类定义自身版本的虚函数,为派生类提供公共界面。还说明了抽象类,即含纯虚函数的基类,不可实例化。最后给出抽象类实现功能的代码示例及运行结果。

纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本

    纯虚函数为各派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分)

    纯虚函数说明形式:

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

    一个具有纯虚函数的基类称为抽象类:

    1,含有纯虚函数的类,称为抽象基类,不可实列化。即不能创建对象,存在 的意义

    就是被继承,提供族类的公共接口。

    2,纯虚函数只有声明,没有实现,被“初始化”为 0。

    3,如果一个类中声明了纯虚函数,而在派生类中没有对该函数定义,则该虚函数在

    派生类中仍然为纯虚函数,派生类仍然为纯虚基类。

以下编写一个抽象类实现功能:

class Animal

{

public:

    Animal()

    {

        cout << "Animal::Animal()" << endl;

    }

    ~Animal()

    {

        cout << "Animal::~Animal()" << endl;

    }

    virtual void voice() = 0;

};

class Dog :public Animal

{

public:

    Dog() {

        cout << "Dog::Dog()" << endl;

    }

    ~Dog() {

        cout << "Dog::~Dog()" << endl;

    }

    void voice() {

                cout << "wang   wang" << endl;

            }

};

class Cat :public Animal

{

public:

    Cat() {

        cout << "Cat::Cat()" << endl;

    }

    ~Cat() {

        cout << "Cat::~Cat()" << endl;

    }

    void voice() {

        cout << "miao   miao    " << endl;

    }

};

        Void main(){

            Animal *pa = new Dog;

            pa->voice();

            delete pa;

            cout << "---------------" << endl;

            pa = new Cat;

            pa->voice();

            delete pa;

}

运行结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值