c ++静态类分配

时间:2010-12-12 02:52:24

标签: c++ static allocation

我知道如何防止类的堆分配(make new和new [] private)。 我知道如何防止堆栈和静态分配(使析构函数私有)。

我想知道无论如何只允许在编译时进行静态分配?

3 个答案:

答案 0 :(得分:2)

为什么不使用命名空间?如果你只想要一个静态的实例,就没有理由在类中包装东西。

答案 1 :(得分:2)

不。抱歉。原因是静态分配对类型的要求与自动分配完全相同;它无法区分。

但是,您可以阻止客户端代码实例化您的类型,并提供对该类型自己的代码创建的一个或多个实例的访问。

一般来说,人们常常认为单身等是一个很棒的想法,也许它赋予了一些控制感,无论如何,但无论如何,接下来发生的事情是,在某些时候需要更普遍的实例化,而所有工作都是不只是浪费,而是积极地产生更多...而且完全不必要......工作。

所以一般的建议是,对于过早优化,不要这样做。

虽然在某些情况下它可能是正确的解决方案。

干杯&第h。,

答案 2 :(得分:1)

没有办法强制类的所有实例都是静态的。你能创建一个只有静态成员的类吗?

在我看来,这比使用namespace更好,因为名称空间不能拥有私有成员。