C++之:函数调用的名字查找与继承
来源:互联网 发布:好搜seo 好搜索引擎 编辑:程序博客网 时间:2024/05/21 13:21
以下内容摘抄于《C++ Primer中文版》:
理解函数调用的解析过程对于理解C++的继承至关重要,假定我们调用p->mem()(或者obj.mem()),则依次执行一下4个步骤:
(1)首先确定p(或obj)的静态类,该静态类型是类类型。
(2)在p(或obj)的静态类型对应的类中查找mem,如果找不到,则依次在直接基类中不断查找,直至到达继承链的顶端,如果找遍了该类及基类都找不到,则编译器报错。
(3)一旦找到了mem,就进行常规的类型检查,以确认对于当前找到的mem,本次调用是否合法(是public还是private或者protected)
(4)假设调用合法,则编译器将根据调用的是否是虚函数而调用不同的代码
——如果mem是虚函数并且我们是通过引用或指针进行调用,则编译器产生的代码将在运行时确定到底运行该虚函数的哪个版本,此时就要根据对象的动态类型了。
——反之,如果mem不是虚函数或者我们是通过对象(而非引用或指针)进行的调用,则编译器将产生一个常规函数的调用。
0 0
- C++之:函数调用的名字查找与继承
- 名字查找与继承(函数调用的确认)
- 名字查找与继承
- 关键概念:名字查找与继承
- 【C++】名字查找与类的作用域
- 继承层次中 this,名字查找 导致的成员调用问题
- 继承与构造函数的调用
- C#继承与构造函数的调用
- C++学习笔记-----函数调用时的决议:名字查找,重载决议,可访问性检测
- 函数调用约定与名字修饰约定
- 函数调用约定与名字修饰约定
- 函数调用约定与名字修饰约定
- 名字查找 与名字空间
- 基于名字查找的仿Hook钩子调用,或者说是信号与槽
- C++继承中的名字查找
- C++(继承时的名字遮蔽&&派生类的构造函数)
- C++的继承与名字覆盖
- 函数名字查找
- JSON.parse()和JSON.stringify()
- 二叉搜索树与双向链表
- Android研究院之ListView原理学习与优化总结(二十一)
- java--反射
- Spring+Velocity中模板路径的问题
- C++之:函数调用的名字查找与继承
- MFC多国语言——配置文件
- java 传值、传引用总结
- RoadFlow工作流显示当前工作流节点背景
- HTMl5中sessionStorage和localStorage的区别
- SAX解析XMl文件
- Android CardView使用和导入出错问题
- poj3984 迷宫问题
- 菜鸟初识shell