• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

如题,目的是输入n求1+2+3+...+n,但是不明白为什么要加static,为什么去除

typedef int (*func)( int );
class Solution {
public:
     static int Solution1(int n )
         { return 0;}
  
     static int Sum_Solution(int n) {
         static func f[2] = {Solution1,Sum_Solution};
         return n+f[!!n](n-1);
     }   

};

1如果有空的话能解释的详细一点就好了

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

这个代码的思路是利用递归来计算。其实只需要int Solution1(int n) 和int Sum_Solution(int n) 这两个函数就够了。
可是这代码非要把函数包装进 Solution 类,这两个函数就作为成员函数。
如果把它们声明为普通成员函数(没有static),那么想要调用这两个函数就必须先实例化一个 Solution 对象。原本Solution类存在的意义仅仅是包装下两个函数而已,没有必要为使用这两个函数来实例化 Solution 对象。
所以通常的解决办法就是把它们声明为 static 成员,这样只要通过 Solution 名就可以调用这两个函数了,不需要先实例化 Solution。比如这样调用:Solution::Sum_Solution(100);
附带一个原因就是:代码中利用了函数指针,普通的函数指针只能指向 static 成员函数,所以这两个函数也不能是普通成员函数。



总之,代码中必须有这几个 static 完全是因为这两个函数被包装成了类的成员函数。
除非有要求必须把函数包装到 Solution 类中(有的刷题测试系统有要求),不然根本没必要用到这个类。

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!