问问题
44 次
1 回答
2
调用环境可以将悬空引用传递给 foo
实在不行。悬空引用是不合法的,因此发生这种情况的唯一方法是调用者违反语言规则。我不认为这是一个令人信服的问题。
将 shared_ptr 传递给 bar in。但这需要 bar 具有动态存储持续时间。
不完全的。可以使用自定义删除器构造 shared_ptr,因此如果调用者想要传入“分配的堆栈” Bar
,他们可以使用不删除任何内容的删除器构造 shared_ptr。
bar 是它是一个空对象
那么整个练习的意义何在?是因为构造函数和/或析构函数具有必须在运行Bar
之前/之后发生的副作用吗?foo
如果是这种情况,也许foo
应该自己做这些事情,或者foo_wrapper
可以创建一个函数来隐藏这些细节。
于 2021-11-18T22:01:40.710 回答