[問題] class當函式用

看板C_and_CPP作者 (eMeRaLD)時間13年前 (2013/02/20 00:10), 編輯推噓2(206)
留言8則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) gcc 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) STL 問題(Question): 程式在下面連結 最近在學習STL,看到書上面有一個範例 雖然照著打程式是沒甚麼問題啦 但是有一點想不懂下面這一句 int operator()() {++i;return i*i;} 我想請問為什麼會有兩組() ? 我一開始猜第一個()是operator overloading 但是若是opeartor overloading的話我把它換成其他的operator程式應該也可以過吧 於是我把這一句改成int operator[]() {...;} 然後下面改成generate( ... , ... ,calc_square[]); 結果compile就不給過了 所以就想不通了 所以想請問有沒有大大可以解釋一下為什麼會有兩組()? 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/pZMqFh8r -- ────╮ ╮ ╮╭──┬╭─┬─╯┬── ──╮ ╭╯ │ ││ │ 幹!考試讀不完! /\ <●╰────┼──┤├──┤ ├─★黑特嗎? φ /> │ ││ │ │ ╭───╮ /| ╰ ╰╯ ╰ ╰──╯ ╭╯ ﹀\﹀ 臣亮言:先帝創業未半,而中道崩殂。今天下... ξwinken2004╰────────/\─╯ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.69.60

02/20 00:27, , 1F
Function Call Operator
02/20 00:27, 1F

02/20 00:28, , 2F
簡單來說就是讓class變得像函數一樣可呼叫,
02/20 00:28, 2F

02/20 00:29, , 3F
詳細我不太懂,不過這東西通常拿來當stl的參數
02/20 00:29, 3F

02/20 00:32, , 4F
因為 operator[] 跟 operator() 的參數不同
02/20 00:32, 4F

02/20 00:50, , 5F
簡單來說就是背起來嗎??
02/20 00:50, 5F

02/20 01:22, , 6F
好像是class的無參數func都會被做延伸運算?
02/20 01:22, 6F

02/20 20:31, , 7F
第一個()是跟operator一起的,表示這是個function call opera
02/20 20:31, 7F

02/20 20:32, , 8F
tor,第二個()是使用這個operator函式要傳入的參數
02/20 20:32, 8F
文章代碼(AID): #1H8wFsmV (C_and_CPP)
文章代碼(AID): #1H8wFsmV (C_and_CPP)