设计并实现一个ObjectCounter类,要求:对系统中现存的本类实例计数;每个对象都有唯一的整型ID,按照创建的次序建立;获取当前系统中本类对象的个数;获取每个对象的ID
时间: 2023-12-03 12:42:09 浏览: 77
下面是一个可能的实现,使用了静态成员变量和构造函数:
```cpp
class ObjectCounter {
public:
ObjectCounter() {
id_ = count_;
++count_;
}
static int getCount() {
return count_;
}
int getID() const {
return id_;
}
private:
static int count_;
int id_;
};
int ObjectCounter::count_ = 0;
```
在每个对象的构造函数中,我们使用静态变量 `count_` 计数并分配ID。同时,在 `getCount()` 中返回当前系统中对象的数量,而在 `getID()` 中返回该对象的ID。
这个类可以像这样使用:
```cpp
ObjectCounter obj1;
ObjectCounter obj2;
std::cout << obj1.getID() << std::endl; // 输出 0
std::cout << obj2.getID() << std::endl; // 输出 1
std::cout << ObjectCounter::getCount() << std::endl; // 输出 2
```
注意,这个实现有一个缺点:如果我们拷贝或者移动对象,那么新对象会复制旧对象的ID。如果我们希望每个对象都有唯一的ID,那么需要为这个类禁用拷贝和移动构造函数。
阅读全文