c++ - static_cast 指针类型的性能影响?

标签 c++

static_cast 10,000 项指针类型需要多少?

最佳答案

吹毛求疵的角落

其他答案指出指针的成本为零;就涉及单继承的类层次结构而言,这是正确的,但在处理多重继承时,可能会有(非常小的)成本。

在单继承类中,对象的内存布局通常是这样安排的,即指向派生类的指针可以用作指向基类的指针而无需调整——这通常是通过将对象放在前面,因此指向 Derived 的指针实际上也是指向 Base 的有效指针。

但是在多重继承的场景下,不能将所有的基类放在对象的前面;因此,当将 Derived * 转换为 Base1 *Base2 * 时,可能需要调整指针。在执行涉及指向基类之一的指针的各种操作时,这通常会导致指针的固定大小递增。

当然,这完全可以忽略不计(最多相当于一条非常快的汇编指令),但是尽管如此,在这种情况下 非常非常小的 Actor 成本。请注意,虽然它不是特定于 static_cast,但只要您需要将 Derived * 视为 Base2 *(包括您只需调用Base2 * 方法,因为 this 指针也需要调整)。

补充阅读:http://www.codeproject.com/Articles/12935/What-static_cast-is-actually-doing

关于c++ - static_cast 指针类型的性能影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20207491/

相关文章:

c++ - 如何使用 C++11 正确初始化 'struct stat'?

c++ - 推导 C++11 中 lambda 参数的类型

c++ - 你的 C++ 备忘单上有什么?

c++ - CMakelist.txt 将外部标题和文件包含在文件夹中(boost 中的 odeint)

c++ - 如何让 Google Test 在 QtCreator 中执行多个测试文件?

c++ - Graham Scan C++无法正常工作

c++ - 使用 Catch 框架测试 C++ 模板类

c++ - Windows API编程为什么需要RegisterClass?

c++ - 在 Optimus 笔记本电脑中以编程方式强制使用 NVIDIA GPU

c++ - 将字段声明为 const 调用 "function operator=(const memAddress &) cannot be referenced -- it is a deleted function"