【发布时间】:2015-01-31 15:54:19
【问题描述】:
我在 Scott Meyers 的“Effective Modern C++”一书中读到了一篇关于 shared_ptr 的“项目”,他说如下:
通常的控制块实现比较多 比你想象的复杂。它利用了继承,甚至还有一个虚函数。 (用于确保正确销毁指向的对象。) 这意味着使用 std::shared_ptrs 也会产生控制块使用的虚函数的机器成本。
然后他没有解释虚函数的确切作用。据我所知,删除指向对象的正确方法是使用删除器或类型擦除。所以,请解释一下这是关于什么的。
【问题讨论】:
-
还是他给“类型擦除”机制起了一个“虚函数”的名字?
-
Type-erasing the deleter 需要使用虚函数。 (好吧,从技术上讲,它不需要它,但这是实现它的最方便的方法。)
标签: c++ pointers shared-ptr smart-pointers