C++:虚函数

文章介绍了C++中的虚函数用于实现多态,通过创建虚函数表实现动态绑定。纯虚函数则是一种特殊的虚函数,没有具体实现,用于定义必须实现的接口。含有纯虚函数的类不能被实例化,但可以作为子类的基类,强制子类实现纯虚函数。示例代码展示了如何在子类中实现纯虚函数。
摘要由CSDN通过智能技术生成

虚函数(用于实现多态)

虚函数创建的时候会生成一个v表,即函数映射表,帮我程序查找应该使用那个覆写函数。

使用虚函数会有两个消耗:

  1. 空间,我们需要一个存储虚函数表的空间
  2. 时间(性能),在调用函数时,我们需要遍历一遍虚函数表来查找调用那个函数。

纯虚函数(用于提供必须实现的接口)

纯虚函数是虚函数的一种特殊形式,该函数用virtual关键字定义,没有具体的实现。包含纯虚函数的类叫做虚基类,该类因为纯虚函数没有实际定义所以不能进行实例化。

纯虚函数和java中的接口类似,但是在c++中就是一个特殊的类。纯虚函数的主要作用是当我们想要一组类实现时必须包含某一个功能,就可以把这个功能当成一个必须实现的接口定义为纯虚函数。那么子类的定义必须对这个函数进行实现。
例子:

#include <iostream>
//虚基类
class VirtualBase {
public:
    virtual void ShowName() = 0;//纯虚函数
};

class SubCalss : public VirtualBase{
public:
    void ShowName() override{//对父类的纯虚函数进行实现,否则编译错误,无法生成实例对象
        std::cout << m_name << std::endl;
    }

public:
    char* m_name{nullptr};
};

int main()
{
    SubCalss new_instance;
    char* ch{ nullptr };

    std::cin.get();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值