作者winken2004 (eMeRaLD)
看板C_and_CPP
標題[問題] class當函式用
時間Wed Feb 20 00:10:25 2013
開發平台(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
推 wtvwtvwtv200:Function Call Operator 02/20 00:27
→ wtvwtvwtv200:簡單來說就是讓class變得像函數一樣可呼叫, 02/20 00:28
→ wtvwtvwtv200:詳細我不太懂,不過這東西通常拿來當stl的參數 02/20 00:29
→ hilorrk:因為 operator[] 跟 operator() 的參數不同 02/20 00:32
→ winken2004:簡單來說就是背起來嗎?? 02/20 00:50
→ leiyan:好像是class的無參數func都會被做延伸運算? 02/20 01:22
推 kwpn:第一個()是跟operator一起的,表示這是個function call opera 02/20 20:31
→ kwpn:tor,第二個()是使用這個operator函式要傳入的參數 02/20 20:32