多态: 同一接口 不同形态
1.静多态 编译阶段确定函数的调用(函数重载、模板)
2.动多态 运行时确定函数的接口(virtual触发、在运行时拿到函数的入口地址)
3.宏多态 预编译时确定函数的接口(很少涉及)
虚函数给予动多态支持
一个.cpp文件到一个.exe运行文件的过程:
1.编译
2.链接
3.运行
链接到运行过程中发生了什么?
备注:
-
符号表中存放的是函数的入口地址
-
在运行前所有的数据都是在磁盘上存储,运行时数据加载到内存中
1.合并段和合并符号表(所以在链接过后已经有了函数入口地址,但是此时的函数入口地址是存放在磁盘中的)
2.符号解析(把代码中的符号处理掉 在符号引用的地方找到符号定义的地方)
3.分配地址和空间
4.在text段进行符号的重定位
以Linux系统为例.o文件生成ELF文件格式
这样一来就实现了在运行时确定函数的接口,实现了动多态
来源:CSDN
作者:VegeTass
链接:https://blog.csdn.net/qq_44777506/article/details/104168514