为什么不在 C++ 中使用没有实例且只有静态方法的单例?

问题描述 投票:0回答:1

当您可以只使用静态方法而不需要这样做时,用实例 getter 编写单例有什么意义?

这是我只用静态方法编写的事件处理程序单例的简化版本:

class EventHandler {
private:
   static std::vector<std::function<void()>> m_events; //implemented in cpp
public:
    EventHandler() = delete;
    static void addEvent(std::function<void()> evt) { m_events.push_back(evt); }
};

对我来说,只有静态方法似乎更简单直观,因为

EventHandler
的目的是限制对通常是全局的方法和变量的可见性。编写私有构造函数、非静态方法和变量以及公共实例 getter 有什么好处?

c++ static singleton
1个回答
0
投票

单例相对于“静态类”的一个可能优势是可以使用

const
。提高表现力

© www.soinside.com 2019 - 2024. All rights reserved.