ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++中面向对象以及新特性的困惑与思考【一】

2022-08-09 01:03:00  阅读:350  来源: 互联网

标签:困惑 虚表 函数 绑定 多态 c++ 面向对象 动态 指针


  1. 多态的实现有哪几种?
    a.静态多态:在编译期间实现,通过模板和重载实现
    b.动态多态:在运行期间实现,通过虚函数和继承实现,执行动态绑定

2.如何实现动态绑定?
[讲解]:https://blog.csdn.net/primeprime/article/details/80776625
1.维护虚表(指针数组)
2.类拥有虚表指针
经过虚表调用虚函数的过程称为动态绑定
程序在执行p->vfunc1()时,会发现p是个指针,且调用的函数是虚函数

void test(){
B bObject;
A *p = &bObject;
p->vfun1();//vfun1()是B类重写的A基类虚函数
}
  1. 动态绑定的三个条件是什么?
  • 使用指针访问函数
  • 指针必须是upcast类型
  • 访问的是虚函数
  1. upcast 和 downcast 指什么?

  2. 动态多态的必要条件是什么?
    需要有继承关系 需要有子类重写父类虚函数 需要有基类指针/引用访问子类虚函数

  3. 函数重载与函数重写的区别

标签:困惑,虚表,函数,绑定,多态,c++,面向对象,动态,指针
来源: https://www.cnblogs.com/black-worrior-2000/p/16564411.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有