我正在编写一个事件处理系统(遵循观察者模式......),我想知道哪种是传播或传播 Event 类的最佳方式,如下所示:
class Event{
public:
Event(int code);
virtual ~Event();
int getCode() const;
private:
int code;
};
详细地说,如果更好地通过指针(分配的堆)或作为实例(分配的堆栈)发送它。
Event e(1);
notifyAll(e);
对比
Event * e = new Event(1);
notifyAll(e)
我知道这是一个非常常见的问题,并且我知道针对一般情况的建议指南,但我想知道在事件处理的具体情况下,处理性能、优化、线程安全等。
我的想法是通过堆栈分配发送,看到该类只是一个 POD,并避免生活管理问题(或使用智能指针)。另一方面,事件传播树在我的应用程序中可能非常大,所以我担心这可能是一个问题。
谢谢你。(例如,如果你知道任何好的实现,不像 qt 那样复杂,请写下来学习)