c++中成员函数调用过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiangzhiyuan123/article/details/83060743

一.静态类型和动态类型

静态类型:在编译的时候能够确定类型的。

动态类型:在运行的时候才能够确定类型。

使用指针或引用的表达式才可能出现静态类型和动态类型不一致的情况。

二.成员函数调用过程

假如我们调用p->mem():

1.首先确定p的静态类型。

2.在p的静态类型中查找mem()。如果找不到,则依次在直接基类中不断查找直到继承链的顶端。

3.一旦找到了mem,就进行常规的类型检查,确认此次调用是否合法。

4.假设调用合法,则编译器根据调用的是否是虚函数而产生不同的代码。由动态类型决定。

猜你喜欢

转载自blog.csdn.net/jiangzhiyuan123/article/details/83060743