静态函数的静态函数

时间:2016-03-11 09:09:54

标签: c++ static-functions

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

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;
}

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

1 个答案:

答案 0 :(得分:2)

你在这里做的是使用一个类来封装两个方法 - 与命名空间相同。实际上,您正在使用类替换命名空间的使用。

有用吗?是的,确实如此!

这样做可以吗?那么,从代码维护/可读性的角度来看,并非如此,因为:

  • 您可以继承课程
  • 您可以实例化一个类
  • 静态方法不属于任何类实例,这可能会在以后的行中引起问题,尤其是在扩展类时。

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

当您正确使用c ++提供的语言功能时,代码更清晰,更易读,也更简单。