2

我正在编写一个事件处理系统(遵循观察者模式......),我想知道哪种是传播或传播 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 那样复杂,请写下来学习)

4

1 回答 1

1

如果您通过引用传递堆栈分配的对象,那么这与通过指针传递之间没有性能差异。

如果你通过指针传递,那么一些代码必须负责delete-ing 对象。OTOH,如果对象的生命周期需要持续超出其创建范围,那么您将被迫进行动态分配。在这种情况下,也许您可​​能需要进行引用计数。没有更多信息很难说。

于 2011-04-19T17:41:59.910 回答