gpt4 book ai didi

c++ - 在 C++ 中删除匿名对象

转载 作者:太空宇宙 更新时间:2023-11-03 10:33:18 28 4
gpt4 key购买 nike

在 C++ 中,如果将匿名对象作为参数传递给命名对象方法,删除命名对象时匿名对象是否会被删除?

library I'm using对于一个项目来说,它的大部分对象的方法都需要指向对象的指针,a la:

WContainerWidget::addWidget(WContainerWidget* widget) {/*...*/}

在他们的示例中,他们在构造这些对象时经常使用 new 运算符。

WContainerWidget* aFoo = new WConainerWidget(/*args*/);
aFoo->addWidget(new WText(/*args*/));

如果我删除aFoo,匿名WText()对象会被删除吗?

我是否相信他们的实现会处理这些删除而无需对他们的源代码进行排序,或者我应该避免示例行为,并自己明确命名/删除所有内容?

最佳答案

是的,小部件获得所有权并自动销毁:

http://www.webtoolkit.eu/wt/doc/reference/html/overview.html

When inserting a widget in the widget hierarchy, ownership is transferred to its parent in the tree.

这是一个定义错误的接口(interface)。它来自旧学校,人们仍在定义接口(interface),如 C 接口(interface)。

传递指针是一个愚蠢的想法,因为没有与之关联的所有权概念,因为现代 C++ 库已经转向使用智能指针的概念。这提供了一种在代码中记录(并由编译器强制执行)指针所有权概念的机制。

关于c++ - 在 C++ 中删除匿名对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176744/

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