【发布时间】:2016-05-03 16:59:00
【问题描述】:
我有一个类X 和方法addX(),它在堆上分配X 的对象。我想限制客户端代码直接分配 X 的对象(因此不允许使用 X *ptr = new X)。
我已将 new、new[] 运算符声明为私有,但由于我要分配 X's objects 到 addX(),因此我需要定义它们(运算符)。那么,它们的定义应该是什么样的呢?
【问题讨论】:
-
您能否提供一个更完整的(伪)代码示例来说明您要实现的目标。此外,您应该详细说明您的用例以及您实际需要该限制的原因。
-
我正在开发一个在内部处理所有对象的框架。用户只需调用 addThis() 或 removeThat() 等。
-
@ibe 您是否考虑过通过使构造函数(也可能是析构函数)
private来完全关闭创建,并且只提供创建对象的public成员函数?如果您想控制对象的创建方式,那将是最简单的事情,IMO。
标签: c++ memory-management heap-memory