函数指针与模板的通用之处
2015-10-08 10:32
218 查看
要求a与b之和,c与d之差。。。等等,我们可以单独为他们设置一个函数,但是如果函数功能改变,则需要重写,缺少灵活性。而函数指针与模板提供了极大地便利。
一、函数指针
一个函数在编译时被分配一个入口地址,这个入口地址称为函数指针,就如同指针是一个变量的地址一样。函数指针的用途很多,最常用的就是把指针作为参数传递到其他函数。
结果:
二、模板
该类程序也可以用静态模板类来实现,解决方法一致。
也可以写成先实例化的形式:
结果:
一、函数指针
一个函数在编译时被分配一个入口地址,这个入口地址称为函数指针,就如同指针是一个变量的地址一样。函数指针的用途很多,最常用的就是把指针作为参数传递到其他函数。
#include <iostream> using namespace std; int add(int x, int y)//求和 { return (x + y); } int sub(int x, int y)//求差 { return (x - y); } void test(int (*p)(int, int), int a, int b) {//函数指针 int result = (*p)(a, b); cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"result = "<<result<<endl; } int main() { int a=1, b=2, c=3, d=4; test(add, a, b);//利用函数指针求和 test(sub, c, d);//利用函数指针求差 return 0; }
结果:
a = 1 b = 2 result = 3 a = 3 b = 4 result = -1 Process returned 0 (0x0) execution time : 0.453 s Press any key to continue.
二、模板
该类程序也可以用静态模板类来实现,解决方法一致。
#include <iostream> using namespace std; template <class T> class Operate { public: static T add(T x, T y)//求和 { return (x + y); } static T sub(T x, T y)//求差 { return (x - y); } }; int main() { int a=1, b=2, c=3, d=4; int x, y; x = Operate<int>::add(a, b);////// y = Operate<int>::sub(c, d);////// cout<<x<<endl<<y<<endl; return 0; }
也可以写成先实例化的形式:
#include <iostream> using namespace std; template <class T> class Operate { public: static T add(T x, T y)//求和 { return (x + y); } static T sub(T x, T y)//求差 { return (x - y); } }; int main() { Operate<int> ope;//实例化 int a=1, b=2, c=3, d=4; int x, y; x = ope.add(a, b);// y = ope.sub(c, d);// cout<<x<<endl<<y<<endl; return 0; }
结果:
3 -1 Process returned 0 (0x0) execution time : 0.211 s Press any key to continue.
相关文章推荐
- 关于指针的一些事情
- 设计模式之行为型模式 - 调用行为的传递问题
- [div+css]晒晒最新制作专题推广页模板
- 2008大学生入党申请书 模板
- IMAIL多语言模板两套Outlook&Gmail模板下载
- C# Pointer指针应用实例简述
- C++智能指针实例详解
- C++指向函数的指针实例解析
- 关于c语言指针的两处小tip分享
- 浅析iterator与指针的区别
- 探讨C++中数组名与指针的用法比较分析
- 详解C++中的指针、数组指针与函数指针
- C++中字符串以及数组和指针的互相使用讲解
- C语言安全之数组长度与指针实例解析
- C++中指向对象的常指针与指向常对象的指针详解
- 指向变量的常指针与指向常变量的指针详细解析
- C#通过指针实现快速拷贝的方法
- 在PHP中使用模板的方法
- 深入解析php模板技术原理【一】
- php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]