Я кодирую систему обработки событий (следуя шаблону наблюдателя ...), и я хотел бы знать, какой из них является лучшим способом распространения или распространения класса Event, примерно так:
class Event{
public:
Event(int code);
virtual ~Event();
int getCode() const;
private:
int code;
};
Подробно, если лучше отправить его через указатель (выделенная куча) или как экземпляр (выделенный стек).
Event e(1);
notifyAll(e);
vs
Event * e = new Event(1);
notifyAll(e)
Я знаю, что это действительно распространенный вопрос, и я знаю предложенные рекомендации для общих случаев, но я хотел бы знать, в каком конкретном случае обработки событий заботятся о производительности, оптимизации, поточной безопасности и т. Д.
Моя идея состоит в том, чтобы отправлять через выделение стека, видя, что класс - это просто POD, и избегать проблем управления жизнью (или использования умных указателей).С другой стороны, дерево распространения событий может быть очень большим в моих приложениях, поэтому я боюсь, что это может быть проблемой.
Спасибо.(Например, если вам известна какая-либо хорошая реализация, не такая сложная, как в qt, для изучения, пожалуйста, запишите ее)