泛型编程和函数指针

函数指针

#include<stdio.h>

int jug(int x, int y)

{

if (x >= 0)

return x;

else if (y == 0)

return x;

else

return x / y;

}

int sub(int x, int y)

{

return (x + y);

}

int minus(int x, int y)

{

return (x - y);

}

void test(int(*p)(int, int), int a, int b)

{

int Int1;

Int1 = (*p)(a, b);

printf("a=%d,b=%d\n", a, b, Int1);

}

int main()

{

int a = 1, b = 2, c = 3, d = 4, e = -5;

test(sub, a, b);

test(minus, c, d);

test(jug, e, b);

return 0;

}

#include<iostream>

using namespace std;

template<class T>

//建立一个静态模板库

class Operate{

public:

static T Add(T a, T b)

{

return a + b;

}

static T Mul(T a, T b)

{

return a - b;

}

static T Judge(T a, T b = 1)

{

if (a >= 0)

{

return a;

}

else

{

return a / b;

}

}

};

int main()

{

int A, B, C, D, E, x, y, z;

A = 1, B = 2, C = 3, D = 4, E = 5;

x = Operate<int>::Add(A, B);

y = Operate<int>::Mul(C, D);

z = Operate<int>::Judge(E, B);

cout << x << ‘\n‘ << y << ‘\n‘ << z << endl;

return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 13:01:58

泛型编程和函数指针的相关文章

C++提高1 【泛型编程】函数模板 类模板

[本文谢绝转载] [泛型编程] 函数模板 为什么会有函数模板 现象: 函数的业务逻辑一样 函数的参数类型不一样 [最常用]函数模板  显式的调用 [不常用]类型推导 多个参数,参数定义了必须要用 函数模板,实现int类型数组,char字符串排序: 函数模板 与 普通函数的本质区别 函数模板 和 普通函数在一起 的调用型研究: C++是如何支持函数模板机制的? 函数模板机制结论 类模板 类模板的定义 类模板做函数的参数 类模板的派生成普通类 模板类的派生成模板类 复数类,所有函数都写在类的内部,运

25.C++- 泛型编程之函数模板(详解)

1)初探函数模板 2)深入理解函数模板 3)多参函数模板 4)重载函数模板 当我们想写个Swap()交换函数时,通常这样写: 但是这个函数仅仅只能支持int类型,如果我们想实现交换double,float,string等等时,就还需要从新去构造Swap()重载函数,这样不但重复劳动,容易出错,而且还带来很大的维护和调试工作量.更糟的是,还会增加可执行文件的大小. 函数模板 一种特殊的函数,可通过不同类型进行调用 函数模板是C++中重要的代码复用方式 通过template关键字来声明使用模板 通过

单继承与多继承中的虚函数表和虚函数指针

首先,我们了解一下何为单继承,何为多继承?? 单继承:一个子类只有一个直接父类. 多继承:一个子类有两个或多个直接父类. 单继承中的虚函数表分析: 示例程序: #include <iostream> using namespace std; typedef void(*FUNC)(); class Base { public: virtual void func1() { cout << "Base::func1()" << endl; } virt

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

恼人的函数指针(一)

原文链接:http://www.cnblogs.com/AnnieKim/archive/2011/11/20/2255813.html 这篇是为了加深记忆所写.发现,很多知识若不经过反复的琢磨和动手实践,是很难记得住的. 1)  函数指针的初始化. 函数如下: int CompareString(const string& str1, const string& str2) { return str1.compare(str2); } 函数的初始化有两种方式: 第一种,也是最普遍的方式:

C++成员函数指针错误用法警示(成员函数指针与高性能的C++委托,三篇),附好多评论

今天做一个成绩管理系统的并发引擎,用Qt做的,仿照QtConcurrent搞了个模板基类.这里为了隐藏细节,隔离变化,把并发的东西全部包含在模板基类中.子类只需注册需要并发执行的入口函数即可在单独线程中执行.最终目标是,继承的业务逻辑类外部调用时有两个接口可选,调用syncRun同步执行:调用由引擎自动生成的asyncRun就异步执行.最终自动生成asyncRun的模板基类没能实现,主要原因是mingw对this处理的太有问题了!!原本以为编译器问题,后来才知道成员函数指针和this指针如此特殊

深入浅出剖析C语言函数指针与回调函数(二)

上一篇博文的地址: http://blog.csdn.net/morixinguan/article/details/65494239 这节,我们来看看函数指针与回调函数在Linux内核中的应用. 从上节我们了解到,函数指针和回调函数在开发者和用户之间的一个例子,那么这节,我将引用Linux内核中文件操作结构体来详细的说明. 我们首先来看到这个结构体,这段代码位于linux内核的include/linux/fs.h中,由于代码众多,我只截取几个最基本的例子: File_operations文件操

C语言函数、函数指针解析

函数.函数指针的理解: 函数的定义: void myfunc(void) { } 函数的声明 void myfunc(void); 函数指针的定义.初始化.赋值: 定义:void (*funcp)(void); 初始化: void (*funcp)(void) = &myfunc; 赋值 void (*funcp)(void); funcp = &myfunc; 函数调用:(*funcp)(); funcp(); 也可以这样赋值:void (*funcp)(void); funcp = m

6.7 函数指针

函数指针重载:参数类型要匹配,指针类型必须精确匹配 使用decltype作用于某个函数时,要显示加上*以表示我们需要返回指针,而非函数本身 int func(int a, int b); using pFunc1 = decltype(func) *;typedef decltype(func) *pFunc2;using pFunc3 = int (*)(int a, int b);using pFunc4 = int(int a, int b);typedef int(*pFunc5)(in