位置无关代码中的虚函数是如何实现的?
我知道如果我的类有虚函数,编译器通常会为它生成一个包含所有虚函数地址的虚表,并在我的类的每个对象中存储一个指向虚表的指针。
现在,如果我的代码与位置无关,编译器就无法知道虚函数(或任何函数)的地址。那么它有什么作用呢?
我想知道真正的编译器做了什么(不是理论上可能的);我最感兴趣的是 linux 32 位平台,但其他平台也有点有趣。
位置无关代码中的虚函数是如何实现的?
我知道如果我的类有虚函数,编译器通常会为它生成一个包含所有虚函数地址的虚表,并在我的类的每个对象中存储一个指向虚表的指针。
现在,如果我的代码与位置无关,编译器就无法知道虚函数(或任何函数)的地址。那么它有什么作用呢?
我想知道真正的编译器做了什么(不是理论上可能的);我最感兴趣的是 linux 32 位平台,但其他平台也有点有趣。