
#include <stdio.h>
// 模板,可以调用函数或者Functor
template <typename Functor>
void TestTemplate(Functor func)
...{
func("TestTemplate");
}
// C函数风格
void TestFunction(const char* str)
...{
printf("TestFunction:%s ", str);
}
// Functor风格
struct TestFunctor
...{
void operator()(const char* str)
...{
printf("TestFunctor:%s ", str);
}
TestFunctor()
...{
printf("TestFunctor() ");
}
~TestFunctor()
...{
printf("~TestFunctor() ");
}
};
int main()
...{
TestTemplate(TestFunction); //函数指针作为调用参数
printf("========================================== ");
TestTemplate( TestFunctor() ); //Functor临时对象作为调用参数
printf("========================================== ");
TestFunctor obj; //生成一个Functor的实例
TestTemplate<TestFunctor&>(obj); //使用引用类型来调用,避免拷贝
return 1;
}
本文介绍了一个通用模板函数TestTemplate的实现方式,该函数能够接受不同类型的函数或函数对象作为参数。通过示例展示了如何使用普通C函数、Functor风格的结构体及引用传递的方式调用该模板函数。
94

被折叠的 条评论
为什么被折叠?



