cpp虚函数

本文通过一个C++的例子解释了虚函数的概念及其作用,展示了如何利用虚函数实现基类指针调用子类成员函数,从而实现多态性。这种特性在面向对象编程中尤为关键,例如在游戏开发中创建怪物基类,各怪物子类可以重写攻击行为,通过基类指针调用攻击函数即可实现不同怪物的特定攻击效果。
摘要由CSDN通过智能技术生成

当基类指针指向一个子类对象,通过这个指针调用子类中和基类同名成员函数的时候,基类声明为虚函数时机会调用子类的成员函数,不声明就会调用基类。举个例子

#include <iostream>

using namespace std;
class A 
{
    public :
        virtual void foo() = 0;
        // {
        //     cout << "class_A" << endl;
        // }
};

class B: public A
{
    public :
        void foo() 
        {
             cout << "class_B" << endl;
        }
};

int main() {
    A* a = new B();
    a->foo(); //输出class_B
    return 0;
}

有啥用呢?参考这个链接的回答知乎
定义一个叫怪物的基类,并定义一个叫攻击的虚函数,基类派生若干个子类比如金刚、浩克,重新实现’攻击‘这个函数,定义一个基类指针数组,分别指向子类,这样通过数组中的指针调用攻击函数时就会分别调用金刚和浩克的攻击函数。

这里巧妙的使用了虚函数的性质,数组存储相同类型指针变量,却能调用不同子类的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值