纯虚函数和抽象类

4.1纯虚函数

使用背景:

有时在基类中将某一成员函数定为虚函数,并不是基类本身的要求,而是考虑到派生类的需要,在基类中预留一个函数名,具体功能留给派生类根据需要去定义。

声明纯虚函数:

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

注意:

1)纯虚函数没有函数体

2)最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”

3)声明语句,最后面应该有分号。

纯虚函数的功能:

1)纯虚函数只有函数的名字而不具备函数功能,不能被调用。它只是通知编译系统:“在这里声明一个纯虚函数,留待派生类中定义。”

2)纯虚函数的作用是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它定义。

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

4.2抽象类

这种不能用来定义对象而只作为一种基本类型用作继承的类,称为抽象类,由于它常用作基类,通常称为抽象基类。凡是包含纯虚函数的类都是抽象类。

4.3应用实例

1)一个基类如果包含一个或者一个以上纯虚函数的,就是抽象基类。抽象基类不能也不必要定义对象。

2)抽象基类体现了本类族中各类的共性,把各类中共有的函数成员集中在抽象基类中声明。把它们集中在抽象基类中声明为虚函数,然后在派生类中定义,这样可以利用多态性,方便地调用在各类中的虚函数。可以看到,用基类指针调用虚函数能使程序简明、灵活。

3)抽象基类是本类族的公共接口,或者说,从同一基类派生出的多个类有同一接口,因此能响应同一形式的消息,但是响应方式因对象不同而异。。

4)如果在基类声明了虚函数,则在派生类中凡是与该函数有相同的函数名、函数类型、参数个数和参数类型的函数,均为虚函数(无论是否在派生类中用virual声明)。但同一虚函数在不同的类中可以有不同的定义。纯虚函数是在抽象基类中声明的,只在抽象基类中才称为纯虚函数,在其派生类中虽然继承了该函数,但除非再次用"=0"把它声明为纯虚函数,否则它就不是也不能称为纯虚函数。

5)使用虚函数提高了程序的可扩充性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值