c++ - C++中调用虚函数的时间复杂度

标签 c++ time-complexity virtual-functions space-complexity

假设一个具有 Base 类型的继承层次结构具有 F 个虚函数、D 个不同的派生类型,并假设每个派生类型覆盖所有虚函数。

为 Base* 类型的指针 p 调用虚函数之一的时间复杂度是多少?

此外,如果总共有 O 个对象(在类型之间平均分配)并且所有对象都具有相同的数据成员,系统的空间复杂度是多少?

最佳答案

调用函数的时间复杂度为 O(1)。每个类都有一个“vtable”,它本质上是一个函数指针结构 - 每个对象都有一个指向这个 vtable 的指针,因此调用虚函数只是在 vtable 中查找函数指针并调用它。

O 个对象的空间完整性是 O(O),因为它与对象的数量成线性关系。

关于c++ - C++中调用虚函数的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23502600/

相关文章:

python - 我们可以说从数学角度来说,Python 代码的时间复杂度比 C 代码更好吗?

javascript - 如何检查数组是否包含 JavaScript 中的值?

c++ - boost 函数的Python方法

c++ - MFC Visual Studio 中的代码错误 CString?

c++ - 在 win7(64) 上使用 vs2013(64) 编译 zlib 出现错误

java - Java hashmap 搜索真的是 O(1) 吗?

C++ 构造函数 : why is this virtual function call not safe?

C++ 继承和动态库

c++ - 纯虚函数的模板特化

c++ - 用QT发送POST请求并读取Json Response