【问题标题】:C++ class with all members and methods static具有所有成员和方法静态的 C++ 类
【发布时间】:2019-11-19 01:49:51
【问题描述】:

我有一个包含多个类的程序,并且有一个包含所有成员和方法的类都是静态的,内容如下:两个成员和两个在开始时初始化它们的方法。我的静态类中的所有成员也是公共的。我的问题是,如果这是一种不好的做法,还是有更好的方法呢?我只在另一个类中使用这个类的成员。

【问题讨论】:

  • 如果您在运行时初始化某些东西,那么将所有函数设为静态有什么意义?为什么不将类对象设为静态呢?
  • 听起来你想创建一个singleton 类。
  • 您的class 现在基本上只是一个namespace
  • 相关/可能是骗子:stackoverflow.com/questions/7345956/…
  • 这真的很有用,正是我想要的,谢谢

标签: c++ static static-classes


【解决方案1】:

始终避免创建无用的符号

如果不需要类,请在命名空间中创建一组函数。如果您的一组函数需要处理一些数据,那么静态类/单例就是您的最佳选择。

当我设计应用程序时,我的规则是避免使用可从任何地方调用的东西。

你对自己的限制越多(或者本案例中的用户)库),您的代码越安全(由于使用不当导致的错误更少)。

如果你真的需要做一个静态类,我可以建议你使用这样的构造函数:

class Foo
{
    public:
        Foo() = delete;
};

它避免了实例化类和完全静态类之间的混淆。

如果你喜欢华丽,你可以设置类似的东西:

#define STATIC_CLASS(class_name) public: class_name() = delete

class Foo
{
    STATIC_CLASS(Foo);
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2010-09-24
    相关资源
    最近更新 更多