C++虚函数:代码世界的“替身使者“(从青铜到王者完全指南)

C++虚函数:代码世界的"替身使者"(从青铜到王者完全指南)


一、虚函数是什么?为什么需要它?

1.1 没有虚函数的尴尬世界

假设你开发了一个游戏,里面有各种角色:

class Character {
   
public:
    void Attack() {
    cout << "平A" << endl; }
};

class Mage : public Character {
   
public:
    void Attack() {
    cout << "火球术" << endl; }
};

class Archer : public Character {
   
public:
    void Attack() {
    cout << "蓄力射击" << endl; }
};

// 使用示例
Character* ptr = new Mage();
ptr->Attack();  // 输出"平A"!法师变成了战五渣 😱

在这里ptr->Attack(); 调用的是基类 CharacterAttack 函数,输出 “平 A”,而不是派生类 MageAttack 函数,这是因为在 C++ 里,普通成员函数调用遵循静态绑定机制,由于ptrCharacter类型的指针,所以编译器在编译时就决定调用 Character 类的 Attack 函数。

tips:什么是静态绑定与动态绑定?

- **静态绑定**:在编译阶段就确定要调用的函数。编译器根据指针或引用的类型来决定调用哪个函数,而不是根据指针或引用实际指向的对象类型。
- **动态绑定**:在运行时根据指针或引用实际指向的对象类型来决定调用哪个函数。要实现动态绑定,被调用的函数必须是**虚函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值