2 t3580236 t3580236 于 2016.04.25 17:31 提问

阅读enable_shared_from_this代码时发现一个不懂的地方,求高手指教

当一个类A继承enable_shared_from_this模板类后,在调用“shared_ptr(new A())”创建智能指针过程中,会调用全局函数“_Enable_shared(_Ty *_Ptr, _Ref_count_base *_Refptr, typename _Ty::_EStype * = 0)”,继而给类A父类的weak_ptr赋值。
但当类A不继承enable_shared_from_this模板类时,则会调用另一个_Enable_shared全局函数”_Enable_shared(const volatile void *, const volatile void *)“,该函数体为空。也就不存在给enable_shared_from_this模板类的weak_ptr赋值这一流程。
现在问题是, 为什么类A是否继承enable_shared_from_this模板类会影响到全局函数“_Enable_shared”的调用。 编译器是怎么知道的。

1个回答

CSDNXIAOD
CSDNXIAOD   2016.04.25 17:42
已采纳

enable_shared_from_this实现分析
boost::enable_shared_from_this分析
enable_shared_from_this
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!