4.6-4.7虚析构函数、纯虚函数和抽象类的介绍

4.6、虚析构函数
  • 虚析构函数:在析构函数前加关键字virtual进行说明。
  • 目的:使用delete运算符删除一个对象时,能保证析构函数被正确地执行。

格式:

class<类名>
{
virtual <类型><函数名>(<参数表>)=0;
……
} ;


4.7、纯虚函数和抽象类

4.7.1、纯虚函数

格式:class<类名>
{
virtual <类型><函数名>(<参数表>)=0;
……
} ;

  • 作用:为派生类提供一个一致的接口。
  • 在基类中不能为虚函数给出一个有意义的实现时,可将其声
    明为纯虚函数,其实现留待派生类完成。

4.7.2、抽象类

  • 定义:含有纯虚函数的类称为抽象类
  • 抽象类只能作为基类使用,其纯虚函数的实现由派生类给出;但派生类仍可不给出纯虚函数的定义,继续作为抽象类存在。
  • 抽象类是不能实例化的,不能生成抽象基类的对象。
  • 因此一般将该类的构造函数说明为保护的访问控制权限
    只能作为别的类的基类。
  • 抽象类的作用
    • 用作基类:在一个继承层次结构中,提供一个公共的根,并基于抽象类的操作,设计出对抽象类所描述的一类对象进行操作的公共接口,其完整的实现由派生类完成。
    • 用作指针或引用的基类型:保证进入继承层次的每个类都具有(提供)纯虚函数所要求的行为。
    • 在成员函数内可以调用纯虚函数,但在构造函数或析构函数内不能调用纯虚函数(纯虚函数没有实现代码)。

调用纯虚函数的例子:

class A
{
public :
virtual void f() = 0;
void g() {f();} //正确
A() {f();} //错误
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值