gpt4 book ai didi

c++ - 父/子类所有权语义

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:52 27 4
gpt4 key购买 nike

我一直在用一个父对象构建一个系统,它在其中创建各种子对象,每个子对象都需要一个主对象才能运行。现在,到目前为止,我一直在创建 shared_ptr<Parent>Child* ,所以当 Parent 所有 Childs 的创建者都消失时,Parent 也消失了。

但我正在重新设计我的 API,以便可以在堆栈上创建 Child(以前它只是堆)。现在我不确定如何处理 Parents,因为我不明白为什么它们不应该在堆栈上创建 - 就它们的实际功能而言 - 但是如果 Parent 被破坏然后有人试图使用会发生什么他们在堆上移动、复制或分配的 Child?我应该抛出异常吗?跳过执行操作?或者只是坚持在堆上分配父级?

最佳答案

这是问题句

if Parent is destroyed and then someone tries to use a Child ...

如果这是可能的,那么您拥有共享所有权,这意味着在堆上创建。

因此,要么坚持堆分配,要么放弃共享所有权语义。没有别的办法。 weak_ptr 只是远离通告共享对象的状态。

关于c++ - 父/子类所有权语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4530939/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com