例如
我有一个帐户生成器类,需要一个随机方法来决定 用户名和密码。随机有多种实现方式,因此它是一种 与许多子类的接口。帐户生成器类接受随机 构造函数中的对象。
在Java中,我们不关心对象的删除。但是我现在用C ++来做。 我的问题是,如果我在main()中做了以下操作
Random random=new StdRandom();
accGen accGen=new accGen(random);
我应该在main()中删除“随机”,还是应该将其放入accGen的析构函数中?
编辑:
即使问题得到很好的回答,我想 仍然说明为什么我使用指针的原因是为了帮助 有人面临着同样的问题。
我使用指针的原因是要应用许多模式,例如Factory和 行为。非指针变量似乎无法与 纯虚拟方法,不能显示替代。
在设计视图中,我认为对象的创建者始终是 负责删除。这就是为什么让我感到困惑。所有 调用者想要的是一个accGen对象。我通过一个随机对象是 在accGen内部决定Random的实现。然后随机对象 不是呼叫者级别的参与者,那么为什么呼叫者应该 负责删除。但事实是,在某些情况下, random在呼叫者级别的以下操作中很有用。给定的 例子只是一个例子。
在研究了智能指针之后,Unique指针确实是解决方案 我的问题。就状态而言,它使指针变得更加具体 创建此类指针的目的。
总而言之,如果将对象传递给构造函数后有用,则 该类型将是纯指针,并且在析构函数中不会删除。如果 该对象在调用者级别无用,则类型应为 唯一指针。