我知道如何防止C++中类的动态实例化。 (定义我自己的“new”运算符)但是有没有一种简单的方法可以防止静态实例化,从而强制使用动态实例?也就是说,我该怎么做...(这不是派生的抽象基类。只是一个简单的类)

class B {

};

B b;  // how do I prevent this without using friends or some derived class trick

B* b;
b = new B;  // still want to be able to do this.

最佳答案

您可以通过将c'tor设为私有(private)来防止这种情况:

class B {
B() {}

public:
  static B* alloc() { return new B; }
};

代替b = new B;,您可以这样做:b = B::alloc();

关于c++ - 如何在允许动态实例的同时防止简单C++类对象的静态实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6752853/

10-11 18:19