class a
};
要取得func函式指標,void (a::*pfunc)(int)=&a::func;
::*是乙個特殊操作符,表示pfunc是乙個指標,指向a的成員。獲取成員函式的位址不能通過類物件來獲取,必須通過類名獲取,而且要加上取位址操作。
那麼如果通過指標來呼叫該函式,成員函式都隱含了乙個this引數,表示函式要操作的物件,我們只獲取了函式的指標,還缺少乙個物件作為this引數,為了這個目的,我們先建立乙個物件,然後通過該物件來呼叫成員函式指標:
a a;
( a.*pfunc)(10);
a* pa=&a;
(pa->*pfunc)(11);
對於可變引數模板,一般使用情況是不需要解包的,只需要做乙個類似**的工作即可
#include #include using namespace std;
template class mydelegate
r operator()(args&&... args)
private:
t* m_t;
r(t::* m_f)(args...);
};template mydelegatecreatedelegate(t* t, r(t::* f)(args...))
struct a
void fun1(int i, double j)
};using pcf = void(a::*)(int);
using pf = void(*)(int);
int main()
C 「委託」學習筆記
using system using system.collections.generic using system.linq using system.text namespace delegatetest console.writeline sh3 jiang 組合委託,此時委託就能夠依次執行多...
C 學習筆記 委託
什麼是委託?委託 delegate 是一種可以把引用儲存為函式的型別。委託的宣告非常類似於函式,但不帶函式體 且要使用 delegate關鍵字。委託的宣告指定了乙個型別和引數列表。在定義了乙個委託後就可以宣告該委託型別的變數。接著把這個變數初始化為與委託有相同返回型別和引數列表的函式引用。之後,就可...
C 委託學習筆記
namespace delegate private static void chinesegreeting string name 注意此方法,它接受乙個greetingdelegate型別的方法作為引數 private static void greetpeople string name,gr...