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