C++多态

本文详细介绍了C++中的多态性,包括编译时多态(函数重载和运算符重载)以及运行时多态(虚函数和继承),并通过示例展示了如何在代码中运用这些概念。
摘要由CSDN通过智能技术生成

C++多态

C++中的多态性是面向对象编程的一个核心概念,它允许您使用相同的界面来操作不同的基本数据类型或类。多态性可以分为两种类型:编译时多态和运行时多态。

编译时多态(静态多态)

编译时多态主要是通过函数重载(Function Overloading)和运算符重载(Operator Overloading)实现的。这两种方式允许您在相同的作用域内定义名称相同但参数列表不同的多个函数,或者重新定义操作运算符对类实例的作用方式。

函数重载:可以在相同的类中定义多个相同名称的函数,只要它们的参数列表(参数的类型或数量)不同即可。
运算符重载:可以让预定义的C++运算符在用户自定义的数据类型上以特殊的方式进行操作。
编译器在编译期间根据函数的参数列表决定调用哪个函数或操作,因此称为编译时多态。

运行时多态(动态多态)——主要

运行时多态主要是通过虚函数(Virtual Functions)和继承(Inheritance)实现的。它允许您通过基类的指针或引用来调用派生类中重写的函数。

#include <iostream>

using namespace std;

/*
多态满足关系:
有继承,子类重写父类的虚函数(函数返回值类型 函数名 参数列表 完全相同)
多态怎么使用:
父类的指针或者引用,指向子类的对象。

*/

class Animal{

public:
    virtual void makeSound(){
        cout << "动物在叫!" << endl;
    }
};

class Dog : public Animal{
public:
    void makeSound() override{
        cout <<"狗在叫!"<<endl;
    };

};

class Cat : public Animal{
public:
    void makeSound() override{
        cout <<"猫在叫!"<<endl;
    };
};

void sound(Animal &animal)   //Animal &animal = dog
{
        animal.makeSound();

}

int main()
{
    Dog dog;
    sound(dog);  //引用

    Animal *animal = new Cat;
    animal->makeSound();  //指针

    cout << "Hello World!" << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值