boost bind 函式與類成員的區別

2021-06-09 18:01:20 字數 676 閱讀 9622

class cp

public:

int print(int a, int b)

printf("cp print() a=%d, b=%d");

int print(int a, int b)

printf("print() a=%d, b=%d");

cp f &rf=f;

cp* pf;

bind(print, _1, _2)(10, 20);                      //ok

bind(&print, _1, _2)(10, 20);                   //ok

bind(cp::print, f, _1, _2)(10, 20);             //error     

bind(&cp::print, f, _1, _2)(10, 20);           //ok

bind(&cp::print, rf, _1, _2)(10, 20);           //ok

bind(&cp::print, pf, _1, _2)(10, 20);           //ok

error原因:

cp::print必需要&  表明這是乙個成員函式指標

bind也可以繫結類的成員,用法同繫結成員函式,加&;

const與類成員函式

既然類的例項是個物件,那麼它也應該可以被 const 修飾。按照 const 的定義,const sampleclass foo const 與 sampleclass foo 並不是同樣的東西。簡單來說,foo const 不能被改變,顯然也就是它的字段不能被改變。那麼普通的物件 foo能做的事情...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...