函数和抽象基类

最后,我们到达我们的旅程结束在继承!这是我们将对这个问题的最后一个话题。祝贺你们事先通过最难的语言的一部分!

纯虚拟(摘要)函数和抽象基类

到目前为止,所有我们所写的虚拟函数体(定义)。然而,C++允许你创建一个特殊的虚函数调用一个纯虚函数(或函数)都没有身体!纯虚函数只是作为一个占位符,是由派生类重新定义。

创建一个纯虚函数,而不是定义一个函数体,我们只需指定函数值0。

1
2
3
4
5
6
7
8
9
class Base
{
public:
    const char* SayHi() { return "Hi"; } // a normal non-virtual function    
 
    virtual const char* GetName() { return "Base"; } // a normal virtual function
 
    virtual int GetValue() = 0; // a pure virtual function
};

当我们添加一个纯虚函数来我们班,我们实际上是在说,“它是由派生类来实现这个功能”。

使用一个纯虚函数有两个主要的后果:第一,与一个或多个纯虚函数的抽象基类的任何类,这意味着它不能被实例化!如果我们可以创造基础实例会发生什么:

1
2
3
4
5
int main()
{
    Base cBase; // pretend this was legal
    cBase.GetValue(); // what would this do?
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值