用c++写一个对象池的代码
时间: 2024-03-24 09:39:46 浏览: 15
下面是一个简单的 C++ 对象池的实现,它可以用于管理任何类型的对象:
```cpp
#include <iostream>
#include <vector>
template<typename T>
class ObjectPool {
public:
ObjectPool(size_t size) {
for (size_t i = 0; i < size; ++i) {
pool_.push_back(new T);
}
}
T* acquireObject() {
if (pool_.empty()) {
return new T;
} else {
T* obj = pool_.back();
pool_.pop_back();
return obj;
}
}
void releaseObject(T* obj) {
pool_.push_back(obj);
}
private:
std::vector<T*> pool_;
};
// 测试代码
class TestObject {
public:
void print() {
std::cout << "Hello, Object Pool!" << std::endl;
}
};
int main() {
ObjectPool<TestObject> pool(10);
TestObject* obj1 = pool.acquireObject();
obj1->print();
pool.releaseObject(obj1);
TestObject* obj2 = pool.acquireObject();
obj2->print();
delete obj2;
return 0;
}
```
这个对象池可以管理任何类型的对象。在构造函数中,我们可以指定对象池的大小。在 `acquireObject` 方法中,如果对象池中已经没有可用的对象,就创建一个新的对象。否则,从对象池中获取一个可用对象。在 `releaseObject` 方法中,将不再使用的对象放回对象池。在测试代码中,我们创建了一个 `TestObject` 类来进行测试。