C++实现的lambda Y算子

本文展示了一个使用C++函数对象的示例,包括基本的加法和乘法操作,并通过派生类实现阶乘计算。此外,还介绍了一种通过函数对象进行间接调用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <windows.h>
#include <stdio.h>

class FUNC{
public :
 virtual int operator()(int a, int b)
 {
  return a + b;
 }
};

class FUNC2 : public FUNC{
public :
 int operator()(int a, int b)
 {
  return a * b;
 }
};

int callfunc(FUNC &f, int a, int b)
{
 return f(a, b);
}

 

class CurFunc;
class Y;

class CurFunc{
public :
 virtual int operator()(Y &f, int n)
 {
  return 0;
 }
};

class Y{
public :
 CurFunc *mfunc;
 Y(CurFunc &k) : mfunc(&k){}
 int operator()(int n)
 {
  return (*mfunc)(*this, n);
 }
};

class Fab : public CurFunc{
public :
 int operator()(Y &f, int n)
 {
  if(n > 1)
   return n * f(n - 1);
  else
   return 1;
 }
};

void main()
{
 FUNC2 add;
 Fab fab;
 int out = Y(fab)(5);
 printf("the number is %d/n", callfunc(add, 10, 20));
 printf("the number is %d/n", Y(fab)(10));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值