一、废话开始:前几天发现,原来c++还有模板函数和函数指针,所以这个帖子刚开始学c++小伙伴的可以看看,对入门c++的没有意义。
1、 模板函数:好像也叫“类模板”。也就是这个东西:
[C++] 纯文本查看 复制代码 template <class a>a max(a, data, a data2){
return data>data2?data:data2;
}
它是干什么的呢 ?举个例子,避免求小数和整数的最大时写两个函数。class a, a可以是double、int 、float,char.
2、函数指针:指向函数地址的指针。理解为int的指针也行嘛,就这个玩意:[C++] 纯文本查看 复制代码 #include <iostream>using namespace std;
int max(int a,intb){
return a>b?a:b;
}
int main(){
int(*p)(int,int) = max;//是他是他就是他,函数指针呀
return 0;
}
二、办事,功能:求整数,小数的最大值、最小值、平均值
[C++] 纯文本查看 复制代码 #include <stdio.h>
#include <iostream>
using namespace std;
/******模板函数的使用**********/
template <class A>
A max(A a,A b){
return a>b?a:b;
}
template <class A>
A min(A a, A b){
return a<b?a:b;
}
template <class A>
A age(A a,A b){
return (a+b)/2;
}
/******模板函数的使用**********/
/****** 提示字符初始化**********/
char *des[]={"最大值","最小值","平均数",};
int main(){
int a,b;
int (*p[])(int ,int ) = {max,min,age}; ///整数的函数指针
/****int :函数的返回类型**********/
/****(*p[]):函数指针数组,存放多个函数 **********/
/**** (int, int ): 函数参数类型 **********/
/**** {max,min,age}: 函数指针初始化**********/
double c,d;///小数的函数指针
double (*p1[])(double ,double) = {max,min,age};
while(cin>>a>>b){
cin>>c>>d;
for(int i=0; i< sizeof(p)/sizeof(p[0]); i++){
/**** sizeof(p)/sizeof(p[0]): 指针中函数的个数**********/
cout<<des[i]<<": "<<p1[i](c,d)<<endl;///函数指针的使用
cout<<des[i]<<": "<<p[i](a,b)<<endl;
}
}
return 0;
}
三、一点见解:
就个人而言,指针学得不好,所以对函数指针是敬而远之,了解一点,不怎么使。
但是有些函数库里有这个东西,知道一点,看其他函数也轻松。 |