当前位置: 首页 > news >正文

C++多态常见问题

  1. 什么是多态

多态指的是不同类的对象调用同一个方法时做出不同响应的能力

主要是分为两类

一类是编译时多态 也称静态多态 通过函数重载和运算符重载实现

一类是运行时多态 也称动态多态 通过函数重写(覆盖)实现 具体调用时才决定是哪个函数 使用虚函数实现

  1. 什么是重载 重写 重定义

重载指的是在同一个作用域中 函数名相同 但参数列表不同 包括类型\个数\顺序 的函数 返回值不同不算重载 属于静态多态 底层原理是在编译时形成不同的函数名 链接时区分链接

重写指的是在继承关系中子类重新定义继承来的虚函数 重写的函数名\参数列表\返回值类型必须和父类一致 被继承的函数必须是虚函数 可以指定父类显示调用基类的被重写函数 属于动态多态 通过重写子类中的虚函数表实现

重定义指的是在继承关系中 子类重新定义继承来的非虚函数 父类的函数被隐藏 可以使用域作用限定符来访问父类中的同名函数

  1. inline函数可以是虚函数吗

可以 但是inline本身是一个建议的关键字 编译器会忽略inline属性 将其作为虚函数放到虚表中

  1. 静态成员函数可以是虚函数吗

不可以 静态成员函数没有this指针 无法确定属于哪一个对象 也无法访问虚表

  1. 构造函数可以是虚函数吗

不可以 对象中的虚函数表指针在构造函数初始化列表阶段才初始化 如果构造函数是虚函数 那就找不到构造函数了

  1. 析构函数可以是虚函数吗

可以而且在继承关系中最好把析构函数设置成虚函数 因为当使用父类指针或引用管理子类对象时 如果没有设置为虚函数 就只会调用父类的析构函数而不调用子类的析构函数

构造时是先构造父类再构造子类 析构时是先析构子类再析构父类

  1. 虚基表和虚函数表是什么

虚基表是为了解决菱形继承中数据冗余和二义性的问题的

虚函数表是用于覆盖父类的虚函数的

  1. 抽象类是什么 有什么作用

抽象类是包含纯虚函数的类 不能被实例化 只有子类重写了纯虚函数才能实例化 这里体现了接口继承的关系


http://www.mrgr.cn/news/45421.html

相关文章:

  • `cd` 后面没有指定任何目录,表示回到用户的主目录(`$HOME`)
  • JavaEE学习一条龙服务————概述
  • 零基础学习 Python 爬虫技术的大纲
  • 2024 Spring 面试题大全:你的成功之路指南
  • 「完美收官」科东软件2024上海国际工博会精彩回顾:鸿道操作系统赋能新型工业化
  • 【华为HCIP实战课程八】OSPF网络类型及报文类型详解,网络工程师
  • List子接口
  • 时序约束进阶四:set_input_delay和set_output_delay详解
  • Xinstall带你解锁App下载归因新姿势,轻松搞定推广难题
  • C++——优先级队列
  • <Rust>iced库(0.13.1)学习之番外:如何为窗口添加初始值?
  • 移除元素(算法题分享)
  • Linux-分析 IO 瓶颈手册
  • 深入解析TikTok黑屏问题及解决方案
  • 高带宽示波器在信号测试分析中的优势和主要应用场景
  • 水凝胶微型机器人,材料多样性能优
  • 2024盘点二十家网站建设公司,一篇教你怎么选!
  • 上门家政系统开发、现成源码案例
  • unsat钱包签名算法解析
  • LIMS助力实验室管理智能化、高效化转型