gpt4 book ai didi

c++ - 管理事件 : pointer or instance? 的传播

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:12 24 4
gpt4 key购买 nike

我正在编写一个事件处理系统(遵循观察者模式...),我想知道传播或传播事件类的最佳方式是什么,如下所示:

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那么复杂,想学习的请写下来)

最佳答案

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

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

关于c++ - 管理事件 : pointer or instance? 的传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com