c++多态定义以及实现原理详解,虚函数、纯虚函数、虚析构、纯虚析构超详细教学,还有图像表示和例子;

本文详细讲解了C++中的多态特性,包括虚函数的作用、动态多态的条件,以及虚函数、纯虚函数、虚析构和纯虚析构的概念和实现原理。通过实例演示了如何使用这些概念实现多态行为,帮助读者深入理解C++的多态机制。
摘要由CSDN通过智能技术生成

知识点1【多态之虚函数】

1、多态的分类

静态多态(静态联编):在编译阶段就可以确定函数的调用地址,并产生代码。(函数重载、运算符重载、重定义)
动态多态(动态联编):在运行的时候,确定函数的调用地址。(虚函数)

2、虚函数的引入:

在这里插入图片描述
需求:设计一个算法,操作父类派生出的所有子类;

3、父类指针(引用)指向子类空间(别名)带来的问题

#include <iostream>
using namespace std;

class Animal
{
   
public:
    void speak()
    {
   
        cout << "动物在说话" << endl;
    }
};

class Dog : public Animal
{
   
public:
    void speak()
    {
   
        cout << "狗在汪汪" << endl;
    }
};

int main(int argc, char const *argv[])
{
   
    Animal *p = new Dog;
    p->speak();
    return 0;
}

在这里插入图片描述

问题:父类指针 只能操作 子类空间的中的父类部分。没办法操作派生出的子类;

4、虚函数

使用关键字vrtual修饰的成员函数 叫做虚函数。

父类指针 可以 访问子类中重写父类的虚函数。

重写:有继承 子类重写父类的虚函数。函数名、返回值类型、形参必须和父类虚函数一模一样。

#include <iostream>

using namespace std;
class Animal
{
   
public:
    //虚函数
    virtual void speak()
    {
   
        cout<<"动物在说话"<<endl;
    }
};
class Dog:public Animal
{
   
public:
    //也是虚函数:子类重写父类的虚函数  子类中的virtual可以省略
    virtual void speak()
    {
   
        cout<<"狗在汪汪"<<endl;
    }
};
class Cat:public Animal
{
   
public:
    void speak()
    {
   
        cout<<"猫在喵喵"<<endl;
    }
};
//设计的算法(动物说话算法)
void AnimalSpeak
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值