#include "stdafx.h"
#include #include #include #include using namespace std;
class student
//運算子過載 ==
bool operator==(int no) };
class matchexpress
bool operator()(student &s) };
int _tmain(int argc, _tchar* argv)
1)定義了乙個函式物件類matchexpress,過載了operator() (student & s)運算子函式。
2)當執行count_if語句時,把第三個引數matchexpress(75,80)作為函式物件,先呼叫建構函式給matchexpress的成員變數賦值(lowgrade,highgrade),
然後向量中的每個學生物件作為函式物件的引數呼叫operator() (student& s)函式,判斷學生的成績是否在範圍之內。
當然,可在matchexpress類中定義更多的成員變數,形成更複雜的表示式。
物件作為函式引數
物件作為函式的引數時,其傳遞過程較為複雜,傳遞方式比較獨特。其傳參過程與陣列不同 陣列變數的名稱代表陣列的首位址,而物件的變數名稱卻不能代表物件的首位址。傳參時不會像陣列那樣以首位址作為函式的引數傳遞,而是先將物件中的所有資料進行備份 複製 將複製的資料作為形參傳遞到呼叫函式中去 類物件中的資料成員...
3 4 2 引數化函式的好處
3.4.2 引數化函式的好處 我們看另乙個使用這個函式的示例,為了不同的目的,初看起來,完全不同於計算列表元素的和或積。讓我們看看,是否能找出最大值 aggregatelist max 1 4 1 5 2 8 3 val it int 8 作為第乙個引數的函式 max 是內建的 f 函式,返回給定的...
3 4 2 引數化函式的好處
3.4.2 引數化函式的好處 讓我們看乙個另外的示例,為了另乙個目的而使用此函式 乍一看起來,與加或乘列表中的元素的詩篇同。讓我們看看,是否能算出最大值 aggregatelist max 1 4 1 5 2 8 3 val it int 8 這個函式的第乙個引數值 max 是內建的 f 函式,從給...