【发布时间】:2017-05-30 07:26:12
【问题描述】:
哪个演员更快?对象指针的static_cast还是shared_ptr的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);
哪个操作更快,为什么? (我可能有一些语法错误,但我希望我没有)。
【问题讨论】:
-
两种转换都在编译时而不是在运行时执行。你真的对编译中的一些 usec 感兴趣吗?无论如何
static_cast应该更快。qSharedPointerCast执行额外检查,然后调用static cast。 -
@KonstantinT。当我执行强制转换时,QSharedPointer 中的计数器会增加吗?谢谢。
-
如果你执行静态转换计数器将不会增加。这意味着计数器将与您执行施法之前相同。如果您执行 qSharedPointerCast,您将有两个 sharedpointer 和 counter 将等于两个。
-
@KonstantinT。 “两种转换都在编译时而不是在运行时执行”你是什么意思?
标签: c++ qt shared-ptr static-cast