【C++ 面试题】多态的详细介绍

在这里插入图片描述

1. 什么是多态?

  • 🐧 通俗来说 就是多种形态,具体点就是,完成某个行为,不同对象去完成时会产生不同的状态。

  • 静态多态:程序编译期间确定了程序的行为(函数重载)

  • 动态多态:程序运行期间确定根据具体拿到的类型确定程序的具体行为,调用具体函数


2. 构成多态的两个必要条件

⚽① 必须通过基类的指针或者引用调用虚函数
⚽② 被调用的函数必须是虚函数,派生类必须完成对基类的虚函数重写


3. 为什么析构函数建议是虚函数 ?

2. 什么是重载、重写、重定义

  • 重载🍎
    两个函数在同一作用域函数名相同,参数不同、
class MyClass {
public:
    void display(int i) {
        std::cout << "Integer: " << i << std::endl;
    }

    void display(double d) {
        std::cout << "Double: " << d << std::endl;
    }

    void display(int i, double d) {
        std::cout << "Integer and Double: " << i << ", " << d << std::endl;
    }
};

  • 重写(覆盖)🍎
    两个函数分别在 基类和派生类的作用域;函数名、参数、返回值类型都相同(协变和析构函数除外);两个函数必须是虚函数;

  • 重定义🍎
    两个函数分别在基类和派生类的作用域;函数名相同;两个基类和派生类的同名函数,不构成重写就是重定义;


3. 多态的实现原理?

⚽ 要达到多态,必须满足两个条件:①虚函数的覆盖;②对象的指针或者是引用调用虚函数

🏀 满足多态的函数调用,不是在编译时确定的,是运行起来以后到对象中去寻找的;


4. 虚函数表是在什么阶段生成的,存在哪的?

🐧 虚函数表是在编译阶段就生成的,一般情况下存在代码段(常量区)的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来可期LJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值