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 指向一般函式的指標 函式指標的宣告中就包括了函式的引數型別 ...