C_and_CPP 板


LINE

舉個小例子 typedef int(*funPtr)(int, int); int add(int a,int b) { return a + b; } int sub(int a, int b) { return a - b; } void Math(funPtr callback) { printf("Time to Math class, result = %d\n", callback(5, 1)); } int main() { Math(add); Math(sub); char c = getchar(); return 0; } 其中的 Math(add) 該怎麼敘述他呢? Ans1: 我把add註冊到Math裡面 Ans2: add 是一個callback func 並放到 Math 裡面 大家聽到callback func就知道這func是引數的意思嗎? 不好意思 新手問題 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 150.117.206.89
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1492845281.A.922.html
1F:→ x000032001: 2 你並沒有註冊他 只是傳進去 1很奇怪 04/22 15:24
2F:推 cuteSquirrel: Math(add)是把add這隻function的以function pointer 04/22 15:45
3F:→ cuteSquirrel: 的形式傳入Math的參數列。讓裡面的Math呼叫可以用fu 04/22 15:45
4F:→ cuteSquirrel: nction pointer來呼叫add, 做兩數相加的加法運算。 04/22 15:45
5F:→ cuteSquirrel: Function pointer 提供了一種彈性的函數呼叫方式。 04/22 15:50
6F:→ cuteSquirrel: 以原po的例子來說,可以再實作兩個數學函數,mul做 04/22 15:50
7F:→ cuteSquirrel: 乘法,div做除法。擴展成一個小型的四則運算程式。 04/22 15:50
8F:推 cuteSquirrel: Callback function在原po的例子裡是add和sub. add和 04/22 15:56
9F:→ cuteSquirrel: sub這兩個以function pointer傳入Math(), 在Math() 04/22 15:56
10F:→ cuteSquirrel: 裡面被呼叫。 04/22 15:56
cuteSquirrel: Ans2比較貼近原po的例子。 謝謝兩位 我只是好奇我告訴別人說 add & sub 是callback func 這樣我同事們就知道這是要被當作func pointer傳入其他func作為引數嗎? 因為連我自己都無法定義清楚了 冏 ※ 編輯: EngRookie (150.117.206.89), 04/22/2017 16:22:22
11F:推 kyuudonut: 我覺得改一下函數命名會比較好閱讀一點 04/22 19:17
12F:推 s89227: 在其他語言好像叫delegate? 04/22 22:47
13F:推 cuteSquirrel: 推。像是c#的delegate 04/22 23:20
14F:→ uranusjr: 不過 delegate 在某些語境下又會有完全不同的意思 XD 04/22 23:31
15F:推 steve1012: 應該知道吧 04/22 23:45
16F:推 loveflames: C++講delegate,我第一個想到的是delegating ctor 04/23 08:26
17F:推 CoNsTaR: higher-order function 04/24 19:18
19F:→ Chikei: 不過用higher-order有不小的機會會被問這是啥意思...XD 04/25 01:17
20F:推 Neisseria: higher-order function +1 04/25 09:40
21F:→ ah7675: 每次都要搞名詞解釋 真的很煩 04/26 00:12
22F:→ ah7675: 是不是都用名詞當鬥爭工具? 講贏定義的人是老大? 04/26 00:12
23F:推 CoNsTaR: 樓上 這裡的老大只有一個喔 請去拜見水晶球神 04/26 05:38
24F:推 CoNsTaR: 不過這篇本來就是在問名詞,給名詞解釋問題在哪? 04/26 05:40
25F:推 ronin728: 只傳函數進去不算callback,必須是要是下個流程才算(CPS 04/26 11:29
26F:→ ronin728: 也就說傳進來的函數也必定只能以tail call的方式使用 04/26 11:39
27F:推 Killercat: 你可以查一下學一下functor, 近代的c++多半用這結構 04/26 22:37
28F:→ Killercat: 體來表示一個function 而不是把point of function傳入 04/26 22:37
29F:→ Killercat: 優點很多,包括了簡易的型別安全以及易用性 可以學一下 04/26 22:39
30F:→ Killercat: C++11以前須用boost::function,11後有std::function 04/26 22:41
31F:→ Killercat: https://tinyurl.com/7lsdvjj 04/26 22:41
32F:推 Sidney0503: 名詞是設計者的問題 template在c++ java不一樣 04/27 07:23
33F:→ Sidney0503: apply bind在c++ js不一樣 04/27 07:23
34F:→ Sidney0503: for each拿到index還是內容物 在py js不一樣 04/27 07:27
35F:→ Sidney0503: 不過打架久了大家也漸漸知道 先說是哪家語言的定義 04/27 07:29
36F:→ Sidney0503: 如果你覺得煩 那就可以加入語言開發社群或委員 04/27 07:30
37F:→ Sidney0503: 出一份力改善這種到處不一樣的狀況 04/27 07:31
38F:→ Chikei: 名詞解釋有啥好煩的,難道要吵一架吵完之後才發現兩個人跟 04/27 11:25
39F:→ Chikei: 本是在講不同的東西只是剛好共用名詞有比較好嗎XDD 04/27 11:26
40F:推 CoNsTaR: 通常在討論語言特性的時候會用higher-order function 04/27 12:30
41F:→ CoNsTaR: 用 category 討論程式實作會用 functor 這個詞 04/27 12:30
42F:→ CoNsTaR: 雖然這兩個詞在 theorical computer science 裡實際上指 04/27 12:30
43F:→ CoNsTaR: 的是同一個東西,但是在不同情境下我們會用不同的詞來討 04/27 12:30
44F:→ CoNsTaR: 論 04/27 12:30
45F:→ CoNsTaR: 另外, functor 還分 contravariant、 convariant 兩種, 04/27 12:30
46F:→ CoNsTaR: 但 higher-order function 就沒討論這麼多了 04/27 12:30
47F:→ CoNsTaR: 不過 functor 在很多語言裡已經有自己的意思了,和 TSC 04/27 12:30
48F:→ CoNsTaR: 裡的定義不同 04/27 12:30
49F:推 CoNsTaR: functor 雖然也可以傳入、回傳函數,但是專指這樣的函數 04/27 12:45
50F:→ CoNsTaR: 會用 higher-order function 來稱呼 04/27 12:45







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP