【发布时间】:2017-04-25 11:40:58
【问题描述】:
我在 Youtube 视频 (https://www.youtube.com/watch?v=ZiNGWHg5Z-o&list=PLE28375D4AC946CC3&index=6) 上遇到了 shared_ptr 模仿虚拟析构函数行为的技巧,在搜索互联网时发现了这个 SO 答案:shared_ptr magic :)
通常情况下,如果 B 继承自 A 并且有自己的析构函数,我们需要在基类 A 中添加一个虚拟析构函数来确保正确调用 B 的析构函数。但是,使用 shared_ptr 可以避免对虚拟析构函数的需求。
由于多态函数中的 vtable 查找存在运行时开销,我很想知道 shared_ptr 技巧是否可以避免这种开销。
【问题讨论】:
-
请注意
std::shared_ptr确实有原子引用计数开销。这可能会或可能不会超过虚拟机制。 -
为什么不试试测量呢?
标签: c++ performance oop c++11 shared-ptr