c 學習之初話 函式指標和函式物件 的因緣

2022-05-02 14:48:10 字數 1236 閱讀 8151

函式指標可以方便我們呼叫函式,但採用函式物件,更能體現c++物件導向的程式特性。

函式物件的本質:()運算子的過載。我們通過一段**來感受函式指標和函式物件的使用:

1

int addfunc(int a, int

b) 2

56class

add7

13};

1415

intmain()

16

我們可以看到:函式addfunc和類add本質上都是實現了對a+b的加法運算。從功能上講,兩者並無區別,但從設計上講,兩者的區別很大,乙個將功能封裝成函式,乙個封裝成類。

我們再來關注兩種方式下的呼叫過程:

1  函式指標:

我們使用函式指標的目的在於:使用指標的方式來呼叫函式。

可能我們之前使用使用指標的場合過少,以至於使得我們忘了指標的強大(我們可以將指標指向任意一種型別,無論是基礎型別,還是派生型別,只要指標定義的合理)。既然要使用指標呼叫函式,首先需要宣告乙個函式指標(這就如同你要想將乙個指標指向整型資料,要先宣告乙個int*指標),宣告了函式指標之後,將該指標指向我們要呼叫的函式(這就是第20行和21行做的事),函式指標指向了我們要呼叫的函式,就可以用函式指標來呼叫函式了(22行的**)。因此,不管是函式指標還是其他指標,指標的基本使用思想是一致的:

1   定義 和所要指向物件型別相同(這裡是函式)的指標(指向物件是什麼型別,自己就是什麼型別的指標)

2   將指標指向呼叫物件

3  使用指標的方式代替物件本身執行相應功能。

2  函式物件

我們使用函式指標的目的在於:使用物件(真正意義上的c++中的物件)的方式來呼叫函式(是不是和上面很類似)

。假如我們先不考慮運算子過載這個層面的東西,僅僅是考慮上層的東西,來思考其中的函式物件的運作機制:

首先,我們將所要執行的功能封裝成了乙個類(這個類本質上實現了()運算子的過載),因為我們封裝成了類,所以我們可以宣告物件;因為這個類本質上實現了函式運算子()的過載,所以我們將這個物件稱之為函式物件。也就是,首先,我們基於c++的基本思想(萬物皆可物件),將函式封裝成了類,然後用該類宣告物件,則該物件就是函式物件,使用這個函式物件,我們可以完成函式的呼叫。   我們來看看函式獨享的基本使用過程是:

1  定義 和所要「指向」型別相同(這裡是類)的(函式)物件

2  使用函式物件的方式執行相應的功能

我們可以發現:函式物件的使用更加簡潔,也更加符合c++的程式設計思想!

(ps:附上c++後台開發技能樹)

c 入門之初話指標

先上 再進行總結知識 1 include iostream 2 struct ant year end3 67intmain 8 18 cout arp 1 year 19const ant year end ppa arp 20 auto ppb ppa 21 cout ppa year 22 c...

c 函式指標和函式物件

三 函式指標 四 函式物件 博主認為,要想正確深入了解c 中的函式型別和函式指標,就應當首先了解在c 中成員函式在記憶體中的儲存方式。因此,本文會按照從基礎概念到實際應用,由表及裡的順序撰寫博主對函式指標和函式型別的理解。c 中的記憶體劃分為以下四個部分 1 全域性資料區 data area 2 區...

C 函式指標和函式物件

c 裡有函式指標和函式物件,讓我們來看下這2個的區別 我們在學習c c 時,有時會要寫乙個函式,這個函式的引數是另外乙個函式,一種寫法如下,include using namespace std void test void func int 引數是另外乙個函式 voidfn int data in...