Я начинающий программист, и мне было интересно ...
Мне нужен уникальный идентификатор для моего объекта в игре
, поэтому я решил определить глобальный класс, который содержитглобальный идентификатор, и когда я вызываю конструктор объекта, он будет увеличиваться, а при вызове деструктора этого объекта он уменьшается.
Правда ли, что для каждого вызова конструктора будет соответствующий деструктор?
class id_holder{
private:
int id_count;
public:
id_holder() {id_count = 0 ; std::cout<< "unique_id: I'm constructed"<<std::endl;}
~id_holder(){std::cout<<"unique_id: I'm destructed"<<std::endl;}
void increment_id(){id_count ++;};
void decrement_id(){id_count --;};
int get_id() {return id_count;};
};
class BaseObject {
protected:
void increment_id();
void decrement_id();
public:
virtual ~BaseObject(){decrement_id();}
BaseObject();
BaseObject(V2 pos, ObjectType idobj, double s, Color col);
};
BaseObject::BaseObject(){
//stuff
increment_id();
unique_id = bObj_id_counter.get_id();
}
BaseObject::BaseObject(V2 pos, ObjectType idobj, double s, Color col){
//stuff
increment_id();
unique_id = bObj_id_counter.get_id();
}
void BaseObject::increment_id(){
bObj_id_counter.increment_id();
}
void BaseObject::decrement_id(){
bObj_id_counter.decrement_id();
}
дополнительный вопрос ... можно ли сравнивать адреса памяти (этого должно быть достаточно уникального идентификатора) объектов вместо использования id_holder?