感谢详细回答.
确实如你所说. 如果我能100%确认不会失效, 那么用 A& 是最好的. 这样语义明确, 不用到处判空.
但是项目大了之后, 很多人写代码, 我在想要不要 强制一个团队规范, 就是不用在成员变量里面使用 raw pointer, 如果有, 就用weak_ptr来代替. 这样就100%保证了不会出问题, 但是代价是性能会降低.
如果让大家自己判断是否会danging,而使用A&的话, 就有风险. 团队技术人员能力有高有低, 就有隐患
【 在 ziqin (子青|会挽雕弓如满月|西北望|射天狼) 的大作中提到: 】
: 如果要一定保证不失效,就只有使用shared_ptr或者weak_ptr
: 楼主的问题是不是要牺牲效率而从代码级别保证访问callback不会出问题
: 如果callback有可能会在B的生存期内失效,那就不需要讨论,直接上weak_ptr
: ...................
--
FROM 218.200.160.*