我知道如何防止类的堆分配(make new和new [] private)。 我知道如何防止堆栈和静态分配(使析构函数私有)。
我想知道无论如何只允许在编译时进行静态分配?
答案 0 :(得分:2)
为什么不使用命名空间?如果你只想要一个静态的实例,就没有理由在类中包装东西。
答案 1 :(得分:2)
不。抱歉。原因是静态分配对类型的要求与自动分配完全相同;它无法区分。
但是,您可以阻止客户端代码实例化您的类型,并提供对该类型自己的代码创建的一个或多个实例的访问。
一般来说,人们常常认为单身等是一个很棒的想法,也许它赋予了一些控制感,无论如何,但无论如何,接下来发生的事情是,在某些时候需要更普遍的实例化,而所有工作都是不只是浪费,而是积极地产生更多...而且完全不必要......工作。
所以一般的建议是,对于过早优化,不要这样做。
虽然在某些情况下它可能是正确的解决方案。
干杯&第h。,
答案 2 :(得分:1)
没有办法强制类的所有实例都是静态的。你能创建一个只有静态成员的类吗?
在我看来,这比使用namespace
更好,因为名称空间不能拥有私有成员。