2.函數指針做形參帶的參數無效

函數指針做形參帶的形參不能使用例如:

#include <iostream>
using namespace std;
int sum(int a, int b)
{
	return a + b;
}
//形參只是聲明瞭有一個int(*pf1)(int, int)類型的函數函數指針,這裏的abcd可以省略,
//沒有實際意義,兩個int就說明了這是指向一個帶有兩個int參數和返回一個int值得函數指針。
int sum_sum(int(*pf1)(int a, int b), int(*pf2)(int c, int d))
{
	return  (*pf1)(a, b) + (*pf2)(c, d);//報錯a,b,c,d未聲明
}
int main()
{
//在sum(1,2)和sum(3,4)報錯"int" 類型的實參與 "int (*)(int a, int b)" 類型的形參不兼容
//原因是sum(1,2)返回的是一個int類型的值,sum_sum函數的形參是int(*pf1)(int a, int b)指針。	
	cout << "sum_sum=" << sum_sum(sum(1,2), sum(3,4)) << endl;
	cin.get();

	return 0;
}

那麼我們該如何使用函數指針做形參帶的參數呢?

有一個笨辦法,那就是在調用這個函數指針做形參的函數中再加幾個形參,這樣就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章