- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
C++通过虚拟机制支持动态绑定(bind)。但据我了解,虚拟机制是编译器的一个实现细节,标准只是规定了在特定场景下应该发生的行为。大多数编译器通过虚表和虚指针来实现虚机制。这与虚拟指针和表的实现细节无关。我的问题是:
sizeof
将是该编译器上的指针(this
内的 vptr)的大小。那么假设虚拟指针和 TBL 机制本身是编译器实现,我上面的这个说法是否总是正确的?最佳答案
对象中的 vtable 指针总是最有效的并不是真的。我的另一种语言的编译器出于类似原因过去使用对象内指针,但不再使用:相反,它使用一个单独的数据结构,将对象地址映射到所需的元数据:在我的系统中,这恰好是使用的形状信息由垃圾收集器。
此实现对于单个简单对象会花费更多的存储空间,对于具有许多基数的复杂对象更有效,对于数组大大更有效,因为在数组中所有对象的映射表。我的特定实现还可以在给定指向对象内部任何点的指针的情况下找到元数据。
实际查找速度非常快,存储要求非常适中,因为我使用了地球上最好的数据结构:Judy 数组。
我也知道没有 C++ 编译器使用 vtable 指针以外的任何东西,但这不是唯一的方法。事实上,具有基类的初始化语义使任何实现变得困惑。这是因为在构建对象时,完整的类型必须前后摇摆。由于这些语义,复杂的 mixin 对象导致生成大量虚表集、大对象和缓慢的对象初始化。这可能不是 vtable 技术的结果,而是需要盲目地遵循子对象的运行时类型始终正确的要求。实际上在构造过程中没有充分的理由这样做,因为构造函数不是方法并且不能明智地使用虚拟分派(dispatch):这对我来说不太清楚破坏,因为析构函数是真正的方法。
关于c++ - 替代虚函数调用实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388433/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!