模板函数和函数指针的简单配合
一、废话开始:前几天发现,原来c++还有模板函数和函数指针,所以这个帖子刚开始学c++小伙伴的可以看看,对入门c++的没有意义。1、 模板函数:好像也叫“类模板”。也就是这个东西:
template<classa>a max(a, data, a data2){
return data>data2?data:data2;
}
它是干什么的呢 ?举个例子,避免求小数和整数的最大时写两个函数。class a, a可以是double、int 、float,char.
2、函数指针:指向函数地址的指针。理解为int的指针也行嘛,就这个玩意:#include <iostream>using namespacestd;
int max(int a,intb){
return a>b?a:b;
}
int main(){
int(*p)(int,int) = max;//是他是他就是他,函数指针呀
return 0;
}
二、办事,功能:求整数,小数的最大值、最小值、平均值
#include <stdio.h>
#include <iostream>
using namespace std;
/******模板函数的使用**********/
template <classA>
Amax(A a,A b){
return a>b?a:b;
}
template <classA>
Amin(A a, A b){
return a<b?a:b;
}
template <classA>
A age(A a,A b){
return (a+b)/2;
}
/******模板函数的使用**********/
/******提示字符初始化**********/
char*des[]={"最大值","最小值","平均数",};
int main(){
inta,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); i++){
/****sizeof(p)/sizeof(p): 指针中函数的个数**********/
cout<<des<<": "<<p1(c,d)<<endl;///函数指针的使用
cout<<des<<": "<<p(a,b)<<endl;
}
}
return 0;
}
三、一点见解:
就个人而言,指针学得不好,所以对函数指针是敬而远之,了解一点,不怎么使。
但是有些函数库里有这个东西,知道一点,看其他函数也轻松。 函数指针还是很有用武之地的
wildlifexs 发表于 2019-7-12 00:18
函数指针还是很有用武之地的
怎么说?
毕竟C语言或者C++的优点是有指针,但缺点也是有指针,接近底层,但是麻烦啊 感谢分享! C语言的架构的函数指针是成也指针败也指针 用好了,很方便的,可以把一堆同类的函数封装成一个,再用一个结构体数组就可以循环调用一个,执行不同的功能了
页:
[1]