设计并实现一个ObjectCounter类,要求: (1)对系统中现存的本类实例计数; (2)每个对象都有唯一的整型ID,按照创建的次序建立; (3)获取当前系统中本类对象的个数; (4)获取每个对象的ID。编写测试程序
时间: 2023-11-28 20:50:10 浏览: 26
下面是ObjectCounter类的实现代码及测试程序:
```cpp
#include <iostream>
#include <vector>
class ObjectCounter {
public:
ObjectCounter() {
id_ = count_++;
}
virtual ~ObjectCounter() {
count_--;
}
int getID() const {
return id_;
}
static int getCount() {
return count_;
}
private:
int id_;
static int count_;
};
int ObjectCounter::count_ = 0;
int main() {
std::vector<ObjectCounter*> objects;
for (int i = 0; i < 10; ++i) {
objects.push_back(new ObjectCounter());
}
for (auto obj : objects) {
std::cout << "Object " << obj->getID() << std::endl;
}
std::cout << "Object count: " << ObjectCounter::getCount() << std::endl;
for (auto obj : objects) {
delete obj;
}
return 0;
}
```
ObjectCounter类实现了对象计数和分配唯一ID的功能。在构造函数中,每次创建对象时,计数器count_会自增,并赋值给当前对象的id_属性。在析构函数中,对象计数器count_会自减。getID()函数返回当前对象的ID,getCount()函数返回系统中本类对象的个数。
测试程序中,我们创建了10个ObjectCounter类的对象,并输出了它们的ID。最后输出系统中ObjectCounter类对象的个数,并释放了对象的内存。
阅读全文