函数指针作为形参
/***一般函數情況****/
#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
{
.
.
.
};
#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
{
.
.
.
};
總結
- 上一篇: 桶排序 Bin Sort
- 下一篇: J2EE学习中一些值得研究的开源项目