gpt4 book ai didi

c++ - 来自静态函数的静态函数

转载 作者:行者123 更新时间:2023-11-30 03:43:45 25 4
gpt4 key购买 nike

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

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

它工作正常,但我想知道这种方法是否有任何问题。我可以通过使用其他帖子已经说过的 namespace 来实现相同的目的。但是因为我已经有了我想用静态函数来完成的类(class)。

最佳答案

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

有效果吗??是的,确实如此!

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

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

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

当您正确使用 c++ 提供的语言功能时,代码会更清晰、更易读且复杂性会大大降低。

关于c++ - 来自静态函数的静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35936080/

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