如果要一定保证不失效,就只有使用shared_ptr或者weak_ptr
楼主的问题是不是要牺牲效率而从代码级别保证访问callback不会出问题
如果callback有可能会在B的生存期内失效,那就不需要讨论,直接上weak_ptr
如果callback确保不会在B的生存期失效,并且从楼主的描述来看,callback是在B创建的时候就建立了,并且就是拥有m_b的那个A的instance,那用A&在设计上会更明确一些
如果callback指向的不是拥有m_b的那个A的instance,那用raw pointer只有从构架上保证callback的生存期比m_b长了。
需不需要用weak_ptr,还是却决于类的使用环境。如果有一个统一的container来管理所有A instance的生存周期,那用raw pointer就可以。要在完全去耦合,从类的设计上就保证不出问题,肯定是要损失效率的
【 在 here080 的大作中提到: 】
: A&只是一个必须初始化且无法重定向的A*而已
: A&引用的东西跟指针指向的一样,是否失效不是语言本身保证的。
:
--
FROM 36.23.69.*