可以為類型別的物件過載函式呼叫操作符。一般為表示操作的類過載函式呼叫操作符;
函式呼叫操作符必須宣告為函式成員。乙個類可以定義函式呼叫操作符的多個版本,由形參的數目或型別加以區別;
定義了呼叫操作符的類,其物件常稱為為函式物件(function object)即它們是行為類似函式的物件;
eg.struct absinit
};struct funcobejct
};//test code
int main()
class gt_cls
bool operator() (const std::string & s)
private:
std::string::size_type bound;
};//test code
int main()
std::vector::size_type wc = std::count_if(words.begin(),words.end(),gt6);
std::cout<::size_type wc1 = std::count_if(words.begin(),words.end(),gt_cls(6));
std::cout<::size_type wc2 = std::count_if(words.begin(),words.end(),gt_cls(2));
std::cout<
標準庫定義了一組算術,關係與邏輯運算的函式物件類,以及一組函式介面卡,都是在functional 標頭檔案中定義的;
具體請參考:
在算犯中使用函式物件,用於覆蓋演算法使用的預設操作符;
標準庫提供兩種函式介面卡:
1. binder,將乙個運算元繫結給給定值而將二元函式物件轉換為一元函式物件;
bind1st:將給定值繫結到函式物件的第乙個實參;
bind2nd:將給定值繫結到函式物件的第二個實參;
2. negator ,將謂詞函式物件的真值求反;
not1:將一元函式物件的真值求反;
not2:將二元函式物件的真值求反;
//test code
int main()
//find all value that is greater than 1024
std::vector::iterator result = std::find_if(ivec.begin() , ivec.end() , std::bind2nd(std::greater() ,1024) );
while(result != ivec.end())
std::vectorsvec;
svec.push_back("hello world");
svec.push_back("test");
svec.push_back("huqijun");
svec.push_back("pooh");
//find all value that is not equal to "pooh"
std::vector::iterator ret = std::find_if(svec.begin(),svec.end(),std::bind2nd(std::not_equal_to(),"pooh") );
while(ret != svec.end())
//double every value
std::vectorivec2;
ivec2.reserve(12);
for(int i = 0; i<12 ; ++i)
std::for_each(ivec2.begin(),ivec2.end(),std::bind2nd(std::multiplies(),2) );
for(std::vector::iterator i = ivec2.begin() ; i!= ivec2.end() ; ++i)
{std::cout<<*i<
過載函式呼叫操作符
函式呼叫操作符?函式呼叫操作符是 因此此操作符的函式過載是operator 過載函式呼叫操作符的類物件稱為函式物件或仿函式,因此我們可以像使用函式名一樣使用物件名。先看乙個簡單的例子。過載了函式呼叫操作符的乙個類 class area 上面的類中,操作符函式計算乙個面積,它是兩個整數實參的乘積。為了...
C 中函式呼叫操作符的過載
1,本博文講述函式物件問題 2,客戶需求 1,編寫乙個函式 1,函式可以獲得斐波那契數列每項的值 2,每呼叫一次返回乙個值 3,函式可根據需要重複使用 4,示例 1 for int i 0 i 10 i 2 3,第乙個解決方案程式設計實驗 1,main.cpp 檔案 1 include 2 incl...
C 函式過載操作符
c 可以對操作符 operator 進行過載,一般定義在類的成員函式中,以下面的 為例.class point 定義乙個類模板 建構函式 point 析構函式 過載算術操作符 類似 point operator const point other 過載關係操作符 類似 bool operator c...