引數化的函式物件

2021-07-29 07:31:10 字數 592 閱讀 8626

#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 函式,從給...