成员函数类型 成员函数指针

来源:互联网 发布:php图片用什么打开 编辑:程序博客网 时间:2024/05/16 05:25

// ConsoleApplication2.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>using namespace std;/***********************************************************************//* Title: 成员函数类型  成员函数指针                                   *//* Author: kagula                                                      *//* Date: 2015-07-21                                                    *//* Environment:VS2013UPdate4                                          *//* 备注:又难记又不实用的语法,很多情况下C语言是更好的选择             *//* 源文:《函数指针模板》                                              *//*     http://www.cnblogs.com/xianyunhe/archive/2011/11/27/2265148.html*//***********************************************************************/class CInteger{public:int Sum(int a, int b){return a + b;}};class CFloat{public:float Sum(float a, float b){return a + b;}float Multiply(float a, float b){return a*b;}};template <typename ClassType, typename ParaType>class CTemplate{public:/*函数指针类型模板*/typedef ParaType(ClassType::*pClassFun)(ParaType, ParaType);/*函数指针函数模块*/ParaType Result(ClassType* pClassType, pClassFun fun, ParaType a, ParaType b){return (pClassType->*fun)(a, b);}};int _tmain(int argc, _TCHAR* argv[]){/* 模版实例化为<CInteger, int> */CInteger ci;CTemplate<CInteger, int> cti;int a = 3;int b = 4;cout << "The sum of a and b is " << cti.Result(&ci, &CInteger::Sum, a, b) << endl;/* 模版实例化为<CFloat, float> */CFloat cf;CTemplate<CFloat, float> ctf;float fa = .3f;float fb = .4f;cout << "The sum of fa and fb is " << ctf.Result(&cf, &CFloat::Sum, fa, fb) << endl;cout << "The multiply of fa and fb is " << ctf.Result(&cf, &CFloat::Multiply, fa, fb) << endl;cin.get();return 0;}


0 0
原创粉丝点击