想象一下,我有一个Device类。我不希望程序员能够实例化他自己的Device对象,所以现在我创建一个DeviceManager类。 DeviceManager是将被实例化的唯一实体,并通过让程序员指定某种ID来使程序员能够访问Device对象。这样,程序员仅需要清理DeviceManager类,并且不会留下任何杂散的Device对象。我主要关心的是如何根据好学的垃圾回收来控制对对象的访问。就像我在C ++中描述的一个好主意一样,这是“经理”模式吗?谢谢!

最佳答案

如果您确实需要,可以。

要实现此控制,可以使Device private的构造函数并将DeviceManager声明为Device类中的受保护对象。

class Device
{
private: //not necessary, private by default
   Device();

friend class DeviceManager;
};

class DeviceManager
{
public:
   Device* getDevice();
};


您还可以返回指向Device的智能指针(推荐),并根据需要将创建的设备保留在DeviceManager中。

这称为实例管理器模式。 DeviceManager也是设备的工厂。

同样,C ++没有垃圾回收,但是如果您使用智能指针,则不必担心内存管理。

关于c++ - 如何在c++中控制对对象的访问?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9727041/

10-08 20:46