限制类对象生成的数量,如果我们需要的数值不是“1”,而是某个其它的某个值怎么办?最容易想到的办法是通过添加静态控制变量--计数器来达到目的。假设我们需要为打印机设计一个类,首先可能会这样设计:
class Printer{ public: class TooManyObjects{}; // 当需要的对象过多时就使用这个异常类 Printer(); Printer(const Printer& rhs); ~Printer(); ... private: static size_t numObjects; }; //定义静态类成员 size_t Printer::numObjects = 0; Printer::Printer() { if (numObjects >= 1){ throw TooManyObjects(); } //继续运行正常的构造函数; ... ++numObjects; } Printer::Printer(const Printer& rhs) { if (numObjects >= 1){ throw TooManyObjects(); } //继续运行正常的构造函数; ... ++numObjects; } Printer::~Printer() { //进行正常的析构函数处理; ... --numObjects; } |