C++的多态

在C++中,多态(polymorphism)是面向对象编程中的一个重要概念,它允许不同的对象对同一消息作出不同的响应。具体来说,多态性使得可以通过基类的指针或引用来调用派生类的成员函数,实现了基于对象类型的动态绑定。

C++中的多态性主要通过两种方式实现:编译时多态(静态多态)和运行时多态(动态多态)。

  1. 编译时多态:通过函数重载(overloading)和运算符重载(operator overloading)实现。编译器在编译期间根据函数或运算符的参数类型或数量来确定要调用的具体函数或运算符。

  2. 运行时多态:通过虚函数(virtual function)和继承实现。在运行时,根据对象的实际类型确定要调用的函数,而不是根据指针或引用的类型。在C++中,通过将基类中的函数声明为虚函数,然后在派生类中进行重写(override),实现了运行时多态。

使用运行时多态时,通常需要满足以下条件:

  • 基类中的函数必须声明为虚函数。
  • 在派生类中重写(override)虚函数。
  • 使用基类的指针或引用来调用函数。

 下面是一个简单的示例,演示了C++中的多态性:

#include <iostream>

// 基类
class Animal {
public:
    // 虚函数
    virtual void makeSound() {
        std::cout << "Animal makes a sound" << std::endl;
    }
};

// 派生类
class Dog : public Animal {
public:
    // 重写基类的虚函数
    void makeSound() override {
        std::cout << "Dog barks" << std::endl;
    }
};

// 派生类
class Cat : public Animal {
public:
    // 重写基类的虚函数
    void makeSound() override {
        std::cout << "Cat meows" << std::endl;
    }
};

int main() {
    // 基类指针指向派生类对象
    Animal* animal1 = new Dog();
    Animal* animal2 = new Cat();

    // 调用虚函数,实现运行时多态
    animal1->makeSound(); // 输出:Dog barks
    animal2->makeSound(); // 输出:Cat meows

    delete animal1;
    delete animal2;
    
    return 0;
}

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值