如何限制类的实例数?

Ver*_*era 1 c++

作为练习,我希望创建一个不能超过N个实例的类.我怎样才能做到这一点?

例如,假设您要限制与数据库的连接数,以便不超过N个用户可以同时连接.我理解如何制作一个单身人士:

class Singleton {

private:

    Singleton(const Singleton&);

    Singleton();

public :

    static Singleton Instance() {

         static Singleton p;

         if(!p) {

                p = new Singleton;

         }
};
Run Code Online (Sandbox Code Playgroud)

但如果N> 1个对象,我需要帮助.

Dea*_*ing 5

首先,为什么

一旦我们解决了这个问题,你就会知道如何创建一个只允许一个实例的类,我假设?通常,您使用静态实例和私有构造函数(或其某些变体)来执行此操作.要将其推广到N个实例,您需要做的就是存储一个静态实例数组.

最后,说真的,为什么

  • 考虑到大多数时候,当某人"想要"单身时,他们并不是真的. (5认同)
  • 您的"为什么?"问题的答案很简单:出于完全相同的原因,您希望只有一个实例的类. (3认同)
  • @conio:您正在列出实现细节,但是这样的构造的*动机*(这里称为"Nton")仍然与单例相同.尽管如此,我立刻想到了一个从池中返回对象的工厂:不是单例就是这样的构造(从大小为1的池中返回对象)? (2认同)