函数指针作为形参

/***一般函数情况****/
#include <iostream>
#include <string>
using namespace std;
void function1(string& x)
{
     cout<<x;
}
void function2(string& x)
{
     cout<<x<<endl;
}
void Test(void(*p)(string& y),string& z)
{
    cout<<"this is a test"<<endl;
    p(z);
 }
int main()
{
    string x("welcome!");
    Test(function1,x);
    system("pause");
}
/******成员函数情况********/
#include  <iostream>
using namespace std;

class B 

public :
    double funB(double a){return a;}; 
};

class C 

public :
    double funC(double a){return a;}; 
};

class A

public :
template  <typename T>
double funA(double (T::*func)(double),T t,double a){return (t.*func)(a);};
};

int main() 
{  
A a;
B b;
double dParam = 3.0;

cout < <a.funA(&B::funB,b,dParam) < <endl; 

return 0 ; 
}
//或者
class base

vitual double funA()=0; \\纯虚函数 (如果你在b类 C类等其它类的实现功能不一样的话
} ;
也可以这样:
class base

 
double funB(double){//如果你在其它类中的功能都是一样的话
//函数体

} ;

class a:public base
{
.
.
.
};
class b:public base
{
.
.
.
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值