#include <iostream>
using namespace std;
#include <functional> //std::function 头文件
//传统的函数指针
typedef int(*fun0)(int n);
int testfun(int n)
{
return n;
}
//Lambda表达式
class CBase
{
};
class CA : public CBase
{
public:
CA(int n) : m_id(n) {}
int getid() { return m_id; }
private:
int m_id;
};
class CB : public CBase
{
public:
CB(int n) : m_id(n) {}
int getid() { return m_id; }
private:
int m_id;
};
#define CL(__className__) [](int n){ return new __className__(n); }
int main()
{
//函数指针
fun0 pfun0 = testfun;
cout << pfun0(888) << endl;
//lambda表达式
std::function<CBase*(int)> funA = CL(CA);
CBase* pA = funA(1);
cout << ((CA*)pA)->getid() << endl;
std::function<CBase*(int)> funB = CL(CB);
CBase* pB = funB(2);
cout << ((CB*)pB)->getid() << endl;
system("pause");
return 0;
}
相关文章
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- 12_Python的(匿名函数)Lambda表达式_Python编程之路
- 黑马程序员----关于构造函数与的学习以及this指针在构造函数间的调用规则
- JS中函数声明与函数表达式的异同
- 函数指针、数组指针、字符串指针的定义形式与运算符举例、指针变量做函数参数用法
- [置顶] C++新特性lambda表达式的理解与使用
- Go中的指针与函数接收器
- 浅析C++中的函数与指针
- java语言中的匿名类与lambda表达式介绍与总结 (Anonymous Classes and Lambda Expressions)
- 深入解析C语言中函数指针的定义与使用