//// Created by 尚衍硕 on 18/9/26.// https://my.oschina.net/u/2368542/blog/2208691// https://blog.csdn.net/skillart/article/details/52336303//#include <gtest/gtest.h>#include <functional>#include <iostream>#include <string>using namespace std;//using std::function;/****************************************************************************//* 下面分别给出使用function来包装普通函数,函数对象和类的成员函数的参考代码 *//* 介绍:类模版std::function是一种通用、多态的函数封装。 *//* 通常std::function是一个函数对象类,它包装其它任意的函数对象 *//** 也就是说,通过std::function对C++中各种可调用实体(普通函数、Lambda表达式、函数指针、* 以及其它函数对象等)的封装,形成一个新的可调用的std::function对象;让我们不再纠结那么多* 的可调用实体。一切变的简单粗暴。*//****************************************************************************/int AddXY(int x, int y){return x+y;}int normalFunctionObject(){function<int (int,int)> f = AddXY;int z = f(2, 3);return z;}/****************************************************************************/class CStudent{public:void operator() (string strName, int nAge){cout << strName << " : " << nAge << endl;}};bool functionObject(){CStudent stu;function<void (string, int)> f = stu;f("Mike", 12);return true;}/****************************************************************************//****************************************************************************/TEST(functionObjectTest,test0){ASSERT_EQ(5,normalFunctionObject());}TEST(functionObjectTest,test1){ASSERT_TRUE(functionObject());}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。