奇思妙想 · 2024年 4月 23日 0

明明是一个通用指针类型, 为什么运行期可以找到正确的类对象?

42 次浏览

不管是ObjC的id类型,还是C++基类指针,运行期可以正确找到对应的父类或者子类,根源在二者都有一套查找到正确对象的机制。

  • ObjC运行时可以方便跟踪对象所属的类,即每个NSObject都有一个isa成员,指向对应的类。
  • C++虽然没有运行时执行查找类对象所属类,但它利用虚函数表在编译期进行巧妙的覆盖,达到运行期找到正确的"虚函数"的目的。