0
哪个投射速度更快?对象指针的static_cast或shared_ptr的static_cast?Shared_ptr cast vs static_cast速度
实例QT:
class Base;
class Derived:Base;
auto newBase = QSharedPointer<Base>::create();
auto Derived1 = static_cast<Derived*>(newBase.data());
auto Derived2 = qSharedPointerCast<Derived>(newBase);
该操作是更快,为什么? (我可能有一些语法错误,但我希望我不是)。
两次强制转换都不在运行时编译时执行。你真的对汇编中的某些用法感兴趣吗?无论如何'static_cast'应该更快。 'qSharedPointerCast'执行额外的检查,然后调用'static cast'。 –
@KonstantinT。 QSharedPointer中的计数器在执行投射时是否增加?谢谢。 – Ivan
如果你执行静态转换计数器将**不**增加。这意味着该计数器将与执行演员之前相同。 如果您执行qSharedPointerCast,您将有两个共享指针并且计数器将等于两个。 –