gpt4 book ai didi

c++ - 为动态创建的 TComponent 派生类实例传递 NULL Owner 参数是否可行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:15 27 4
gpt4 key购买 nike

我经常使用 C++ RAD Studio 和 Builder 6,并且在编写非可视化代码时经常动态创建表单或动态创建非可视化组件。在设计表单时,拖放到该表单上的组件的 Owner 属性会自动设置,因此我从不担心。但是,在动态创建从 TComponent 派生的任何内容时,我总是将 NULL 作为 Owner 参数传递,因为我总是负责稍后释放内存。

Borland/Embarcadero 文档并没有真正涵盖动态创建事物的情况下所需的内容(或者也许我没有在正确的地方寻找)并且似乎只涵盖了基于设计时表单的场景。

我想知道为动态创建的组件传递一个 NULL 所有者是否是正确的做法,或者它是否会导致稍后会出现的内部问题。代码编译和工作正常,但我想知道它是否会导致或可能导致任何幕后问题。

最佳答案

这当然不是错误的做法。

正如您已经暗示的那样,传递一个所有者可以让您不必自己管理对象的生命周期。没有隐藏的内部副作用要求您传递所有者。

FWIW:创建/使用和销毁无主组件并不少见,我们一直都在这样做。


编辑 cudo's to Remy

虽然安装时随附的组件在没有所有者的情况下也可以正常使用(除了一些特殊情况,例如 TXMLDocument,在指定所有者时表现不同) 总是有可能第三方依赖分配所有者的自酿啤酒组件。

关于c++ - 为动态创建的 TComponent 派生类实例传递 NULL Owner 参数是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15967075/

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