把仿函式類設計成用於值傳遞

2021-07-07 04:03:59 字數 597 閱讀 3619

1、錯誤示例

將仿函式類的資料和/或多型移到另乙個類中,然後給你的仿函式乙個指向這個新類的指標。比如,你想建立

乙個包含很多資料的多型仿函式類。

templateclass bpfc : public unary_function;

2、正確示例

建立乙個包含指向實現類的指標的小而單態的類,然後把所有資料和虛函式放到實現類:

template// 用於修改的bpfc的新實現類

class bpfcimpl : public unary_function;

templateclass bpfc : public unary_function

};

bpfc::operator()的實現例證了bpfc所有的虛函式是怎麼實現的:它們呼叫了在bpfcimpl中它們真的虛函式。結果是仿函式類(bpfc)是小而單態的,但可以訪問大量狀態而且行為多型。

這個技術在《effective c++》的條款34中有。在gamma等的《設計模式》中,這叫做「bridge模式」。sutter在他的《exceptional c++》中叫它「pimpl慣用法」。

Bundle類用於傳遞值

android中bundle類的作用 bundle類用作攜帶資料,它類似於 map,用於存放 key value 名值對形式的值。相對於 map,它提供了各種常用型別的 put get 方法,如 putstring getstring 和putint getint put 用於往bundle 物件放...

指標用於將函式中形參的值傳遞給實參

void get value 2 unsigned int data0,unsigned int data1 buf中資料長度 unsignedshort buf len 0 buf資料中值的位數 unsignedshort buf data len 0 unsignedshort buf data...

操作符過載應該設計成類成員函式還是普通非成員函式?

四小點 1.這四個操作符過載必須定義為類成員函式。2.復合賦值操作符過載通常應定義為類成員函式。復合賦值操作符如 等。但是不一定得這麼做。3.改變物件狀態或者與給定物件聯絡緊密的操作符,如 等,通常定義為類成員函式。4.對稱操作符,如算術,相等,關係,位操作符,最好定義成普通非成員函式。下面是自己n...