c++ - 如何在允许动态实例的同时防止简单 C++ 类对象的静态实例

标签 c++

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

相关文章:

c++ - CCLabelBMFont、编码和特殊字符

c++ - 如何创建一个不同大小的数组作为私有(private)类变量?

c++ - 对 long double 的(伪)随机数生成器使用 boost

c++ - Emscripten 1.34.1 问题

c++ - C++中通过函数删除一个对象

c++ - 带有自定义数据的 SetWinEventHook

C++ 数组 : conversion of contained type

c++ - 右值作为左值

c# - 用于序列化 C++ 和反序列化为 C# 类的 Protocol Buffer

c++ - 成员声明中的位置违反代码?