如何知道对象的所有者类

时间:2013-09-01 15:06:00

标签: c++

有没有办法知道谁是对象的拥有者?让我们说类A将类B的指针保存为数据成员。 B有什么方法可以知道谁拥有他?

任何帮助对我来说都意味着很多。

1 个答案:

答案 0 :(得分:5)

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

因此,对象无法确定其“所有权”,因为使用该对象的代码可能有多种方式来定义和管理所有权。

根据所有权在您的计划中的含义,boost::enable_shared_from_this可能会对您有所帮助。它允许一个对象(或引用它的人)参与该对象的共享所有权,但它仍然不会告诉您希望与其共享的其他实体。因此,如果您实际上不需要了解A的实例,那么它很有用,您只需要B的实例不被释放。 A以及对B实例生命周期感兴趣的任何人都会使用shared_ptr函数获得Bshared_from_this

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