MyObject
unknown
c_cpp
a year ago
932 B
12
Indexable
#include <iosfwd>
#include <string>
#include "pool.h"
using std::string;
using std::ostream;
class MyObject {
int id;
string name;
inline static Pool<MyObject> pool;
// Disallow copy, assign, and direct construction
MyObject(const MyObject&) = delete;
MyObject& operator=(const MyObject&) = delete;
MyObject(int i, const string& nm) : name(nm), id(i) {}
static void* operator new(size_t) {
return pool.allocate();
}
public:
static void operator delete(void* p) {
pool.deallocate(p);
}
static MyObject* create(int id, const string& name) {
return new MyObject(id, name); // This will use custom `new` operator
}
static void profile() {
pool.profile();
}
friend std::ostream& operator<<(std::ostream& os, const MyObject& o) {
return os << '{' << o.id << ',' << o.name << '}';
}
};Editor is loading...
Leave a Comment