1

我有一个非静态函数的类。由于我的程序的体系结构,我认为使用静态函数会更好,因为该类只是一个实用程序。在某些情况下,我只需要该类的一个功能,因此我认为创建对象是不必要的。基本上我有这个:

class StaticCall
{
public:
    StaticCall(){}
    static int call_1()
    {
        std::cout << "In call 1" << std::endl;
        call_2();
        return 0;
    }
    static int call_2();
    {
        std::cout << "In call 2" << std::endl;
        return 0;
    }
};
int main( int argv, char** argc )
{
    std::cout << "Calling 1" << std::endl;
    StaticCall::call_1();
    std::cout << std::endl;
    std::cout << "Calling 2" << std::endl;
    StaticCall::call_2();
    return 0;
}

它工作正常,但我想知道这种方法是否有任何问题。我可以通过使用其他帖子已经说过的命名空间来实现相同的目的。但是因为我已经有了这个类,所以我想用静态函数来做。

4

1 回答 1

2

你在这里做的是使用一个类来封装两个方法——就像命名空间一样。您实际上是在用类替换名称空间的使用。

行得通吗??是的,它确实!

这样做可以吗?好吧,从代码维护/可读性的角度来看,不是那么多,因为:

  • 你可以从一个类继承
  • 你可以实例化一个类
  • 静态方法不属于任何类实例,这可能会导致以后出现问题,尤其是在扩展类时。

如果你想要的只是封装,或者一种不污染全局命名空间的方法——这就是你拥有命名空间的原因。

当您正确使用 c++ 提供的语言功能时,代码会更干净、更易读且复杂性要低得多。

于 2016-03-11T10:00:45.877 回答