一般函式指標和成員函式指標的區別與聯絡

2021-08-17 14:27:16 字數 1841 閱讀 4264

1函式指標的定義和作用

函式指標是通過指向函式的指標*間接的呼叫函式,可以對函式返回值型別、引數型別、順序、個數都相同的函式實現封裝,是多型*的一種實現方式。

附加:

1函式指標只會匹配返回值型別、引數型別個數順序相同函式。

2一般為了封裝同型別函式,會將函式指標作為介面函式引數,通過函式指標來間接呼叫被封裝的函式。

2一般函式指標與成員函式指標的區別

一般函式指標的呼叫與類中的靜態成員函式並無區別。因為類的靜態成員不屬於任何物件。

但與類的非靜態成員函式指標有區別。因為類的非靜態成員函式中有乙個**的this指標,使得其與一般函式指標不相容。並且類與類之間的this指標也是不一樣的,也就是指向不同類的非靜態成員函式指標間也是不相容的。因而需要指出非靜態成員函式指標所屬的類,即在指標前需要加上引數名,表示指標是指向某一類的非靜態成員函式。

1一般函式指標

1)函式指標宣告:返回值型別 (指標名)(引數型別)

//普通函式指標範例

#include

using

namespace

std;

typedef

void (*pgen)(int,int);//typedef定義乙個函式指標型別

void max(int x,int y)

int main()

//執行結果:

12

2**成員函式**

靜態成員函式指標宣告:返回值型別 (指標名)(引數型別)

非靜態成員函式指標宣告:返回值型別 (類名::指標名) (引數型別)

//類成員函式指標範例

#include

using

namespace

std;

class cmp;

typedef

void (*pgen)(int,int);//靜態成員函式指標,同普通函式

typedef

void(cmp::*pclass)(int,int);//對非靜態成員函式指標,增加了類名

class cmp

}; void result(cmp *c,pclass p,int x,int y)

void resultgen(pgen p,int x,int y)

int main()

//執行結果:105

15

#include

#include

using

namespace

std;

class cmp;

typedef

void (cmp::*pclass)(int,int);

class cmp

void max(int a,int b)

private:

maptable;//使用map構建函式表

};int main()

一般函式指標和類的成員函式指標

函式指標是通過指向函式的指標間接呼叫函式。函式指標可以實現對引數型別 引數順序 返回值都相同的函式進行封裝,是多型的一種實現方式。由於類的非靜態成員函式中有乙個 的this指標,因此,類的成員函式的指標和一般函式的指標的表現形式不一樣。1 指向一般函式的指標 函式指標的宣告中就包括了函式的引數型別 ...

一般函式指標和類的成員函式指標

函式指標是通過指向函式的指標間接呼叫函式。函式指標可以實現對引數型別 引數順序 返回值都相同的函式進行封裝,是多型的一種實現方式。由於類的非靜態成員函式中有乙個 的this指標,因此,類的成員函式的指標和一般函式的指標的表現形式不一樣。1 指向一般函式的指標 函式指標的宣告中就包括了函式的引數型別 ...

一般函式指標和類的成員函式指標

函式指標是通過指向函式的指標間接呼叫函式。函式指標可以實現對引數型別 引數順序 返回值都相同的函式進行封裝,是多型的一種實現方式。由於類的非靜態成員函式中有乙個 的this指標,因此,類的成員函式的指標和一般函式的指標的表現形式不一樣。1 指向一般函式的指標 函式指標的宣告中就包括了函式的引數型別 ...