我知道如何防止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/