如何知道对象的所有者类

How to know the owner class of a object

本文关键字:所有者 对象 何知道      更新时间:2023-10-16

有办法知道谁是对象的所有者吗??假设类A将类B的指针作为数据成员。有没有办法让B知道谁拥有他??

任何帮助对我来说都意义重大

"所有权"的概念不是C++语言中内置的。这是程序员用来理解自己代码的设计概念,而不是语言特性。通常它意味着一些负责释放资源的代码实体(例如动态分配的对象),但有时它意味着不同的东西。

因此,对象通常无法确定其"所有权",因为使用该对象的代码可以通过多种方式定义和管理所有权。

根据所有权在您的程序中的含义,boost::enable_shared_from_this可能会对您有所帮助。它允许一个对象(或引用它的人)参与该对象的共享所有权,但它仍然不会告诉你想要与之共享的其他实体。因此,如果您实际上不需要了解A的实例,只需要不发布B的实例,这是非常有用的。A和对B实例的生命周期感兴趣的任何其他人都将持有他们使用shared_from_this函数获得的shared_ptrB

如果您需要B来访问A的实例,那么您必须创建自己的机制。例如,您可以将指向A实例的指针存储在B实例中。