C++11 적용: 개체 풀
ObjectPool.hpp:
#pragma once
#include
#include
#include
#include
테스트 코드:
#include
#include
#include "ObjectPool.hpp"
using namespace std;
struct MyObj
{
MyObj()
{
cout << "MyObj construct... 0x" << hex << this << endl;
}
MyObj(int a)
{
cout << "MyObj construct:" << a << " 0x" << hex << this << endl;
}
MyObj(const int& a, const int& b)
{
cout << "MyObj construct a:" << a << " b:" << b << " 0x" << hex << this << endl;
}
~MyObj()
{
cout << "MyObj destruct... 0x" << hex << this << endl;
}
void print(const string& str)
{
cout << "print:" << str.c_str() << endl;
}
};
void printTest(std::shared_ptr p, const string& str)
{
if (p != nullptr)
{
p->print(str);
}
else {
cout << "printTest error: p is nullptr..." << endl;
}
}
void TestObjPool()
{
ObjectPool pool;
pool.Init(2); //
// ,
{
auto p1 = pool.Get();
printTest(p1, "p1...");
auto p2 = pool.Get();
printTest(p2, "p2...");
cout << "---------------------" << endl;
}
auto p1 = pool.Get();
auto p2 = pool.Get();
printTest(p1, "p1");
printTest(p2, "p2");
cout << "===========================0" << endl;
ObjectPool pool2;
pool2.Init(2, 1); // , 1
auto p4 = pool2.Get();
printTest(p4, "p4");
cout << "===========================1" << endl;
pool.Init(2, 3, 4); // , 3 4
auto p5 = pool.Get();
printTest(p5, "p5");
cout << "===========================2" << endl;
}
int main(int, char *[])
{
TestObjPool();
system("pause");
return 0;
}
같은 ObjectPool에서 Init를 여러 번 실행할 수 있지만, 모든 Init가 만든 실례는 이 ObjectPool이 실행될 때 실행될 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.