update特征对象

pull/227/head
sunface 3 years ago
parent ff76bee81d
commit e739c354ec

@ -231,7 +231,7 @@ fn main() {
#### &dyn和Box\<dyn\>的区别
前文提到, `&dyn``Box<dyn>` 都可以用于特征对象,因此在功能上 `&dyn``Box<dyn>` 几乎没有区别,唯一的区别就是:`&dyn` 减少了一次指针调用。
因为 `Box<dyn>` 是一个宽指针(`fat pointer`),它内部保存一个指针指向 `vtable`,然后通过 `vtable` 查询到具体的函数指针,最后进行调用。
因为 `Box<dyn>` 是一个宽指针(`fat pointer`),它需要一次额外的解引用后,才能获取到指向`vtable`的指针,然后再通过该指针访问 `vtable` 查询到具体的函数指针,最后进行调用。
所以,如果你在乎性能,又想使用特征对象简化代码,可以优先考虑 `&dyn`

Loading…
Cancel
Save