1. 程式人生 > >函式指標與指標函式(C++工廠設計最喜歡用這個)

函式指標與指標函式(C++工廠設計最喜歡用這個)

在看開源專案的時候,發現C++搞工廠設計都喜歡用這個。

下面來給出這方面的例子(大學裡面沒學過)


函式指標:

型別一:

程式碼如下:

#include <iostream>
using namespace std;

int max(int x, int y){
	return (x > y ? x : y);
}

void main(){
	int(*funPr)(int, int) = max;
	cout << "the max is " << (*funPr)(1, 100) << endl;
	system("pause");
}

其中int (*funPr)為函式指標,(int,int)為其引數,

來看區域性變數圖:


型別二:

使用typedef(這種用得最多,大佬都喜歡用這個來搞工廠)

程式碼如下:

#include <iostream>
using namespace std;

int max(int x, int y){
	return (x > y ? x : y);
}

typedef int(*funPr)(int x, int y);

void main(){
	funPr fun= max;
	cout << "The max is " << fun(1, 100) << endl;
	system("pause");
}

區域性變數如下:


執行截圖都為:


既然學了函式指標,那麼來科普下指標函式:


通過這個可以發現,這個玩意原來就是返回函式的指標

也就是經常寫的

int *pfun(int,int)

返回int*的函式