[問題] 沒看過的宣告用法

看板C_and_CPP (C/C++)作者 (一人斬)時間13年前 (2012/10/02 15:28), 編輯推噓4(408)
留言12則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 6.0 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): struct B { int foo( double data ); static int _stdcall bar(double data); }; typedef int (B::*PFFOO)(double); PFFOO Foo = &B::foo; // 這行的 B:: 算是namespace 嗎?? 看起來像是取function foo 的位址 // 可是這行有 instance 嗎?? B Obj; B* pObj = &Obj int n2 = (Obj.*Foo) ( 47.11 ); int n3 = (pObj->*Foo) ( 47.11 ); // 以上這兩行不明白怎麼可以這樣用 // Obj. 後面還能接 non-member function?? 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/NXt2w 補充說明(Supplement): 在 codeproject 看到的 實務上會這樣用嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.120.242 ※ 編輯: CumCumCum 來自: 118.170.120.242 (10/02 15:30)

10/02 15:34, , 1F
這種宣告用法很常見,可以學起來,很方便 :)
10/02 15:34, 1F

10/02 15:37, , 2F
你的兩個問號其實互相是答案
10/02 15:37, 2F

10/02 15:38, , 3F
instance在呼叫的時候給予,那並不是non-member func
10/02 15:38, 3F

10/02 15:38, , 4F
那是一個ptr to member func
10/02 15:38, 4F

10/02 16:50, , 5F
另外 .* 和 ->* 是特別用在這個地方的運算子
10/02 16:50, 5F

10/02 16:51, , 6F
理解上可以拆開理解 (就是三樓說的呼叫時給予) 但不能分開寫
10/02 16:51, 6F

10/02 16:52, , 7F
請問instance function 在記憶體裡面會有幾份copy?
10/02 16:52, 7F

10/02 16:52, , 8F
每個instance 就有一個copy 還是一個class 只有一個
10/02 16:52, 8F

10/02 16:54, , 9F
一個 class 只有一個而已 它跟普通的 function 差不了多少
10/02 16:54, 9F

10/02 16:55, , 10F
平常在用 obj.func() 呼叫時其實是把 &obj 丟進去變成
10/02 16:55, 10F

10/02 16:55, , 11F
感謝
10/02 16:55, 11F

10/02 16:55, , 12F
instance function 裡的 this 而已
10/02 16:55, 12F
謝謝大家,爬文之後更加清楚了,其實就是shadow大說的,prt to member-func 然後呼叫時,需要 .* or ->* operator 和 instance or ptr to instance 搭配使用 ※ 編輯: CumCumCum 來自: 1.165.199.37 (10/03 23:13)
文章代碼(AID): #1GQfURha (C_and_CPP)
文章代碼(AID): #1GQfURha (C_and_CPP)