第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如題,目的是輸入n求1+2+3+...+n,但是不明白為什么要加static,為什么去除之后會(huì)出錯(cuò)

如題,目的是輸入n求1+2+3+...+n,但是不明白為什么要加static,為什么去除之后會(huì)出錯(cuò)

C++
云爆雷聲 2018-05-13 12:52:07
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如果有空的話能解釋的詳細(xì)一點(diǎn)就好了
查看完整描述

1 回答

已采納
?
onemoo

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊

這個(gè)代碼的思路是利用遞歸來計(jì)算。其實(shí)只需要?int Solution1(int n) 和?int Sum_Solution(int n) 這兩個(gè)函數(shù)就夠了。

可是這代碼非要把函數(shù)包裝進(jìn) Solution 類,這兩個(gè)函數(shù)就作為成員函數(shù)。

如果把它們聲明為普通成員函數(shù)(沒有static),那么想要調(diào)用這兩個(gè)函數(shù)就必須先實(shí)例化一個(gè) Solution 對(duì)象。原本?Solution?類存在的意義僅僅是包裝下兩個(gè)函數(shù)而已,沒有必要為使用這兩個(gè)函數(shù)來實(shí)例化 Solution 對(duì)象。

所以通常的解決辦法就是把它們聲明為 static 成員,這樣只要通過 Solution 名就可以調(diào)用這兩個(gè)函數(shù)了,不需要先實(shí)例化 Solution。比如這樣調(diào)用:Solution::Sum_Solution(100);

附帶一個(gè)原因就是:代碼中利用了函數(shù)指針,普通的函數(shù)指針只能指向 static 成員函數(shù),所以這兩個(gè)函數(shù)也不能是普通成員函數(shù)。


總之,代碼中必須有這幾個(gè) static 完全是因?yàn)檫@兩個(gè)函數(shù)被包裝成了類的成員函數(shù)。

除非有要求必須把函數(shù)包裝到 Solution 類中(有的刷題測(cè)試系統(tǒng)有要求),不然根本沒必要用到這個(gè)類。

查看完整回答
反對(duì) 回復(fù) 2018-05-22
  • 1 回答
  • 0 關(guān)注
  • 1028 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)