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,您將有兩個共享指針並且計數器將等於兩個。 –