C++ 可调用对象

概述

在C++中,“可调用对象”(Callable)是一个可以被调用的对象,它可以接受参数并产生结果。可调用对象可以是函数、函数指针、成员函数指针、lambda表达式、函数对象(functor)、以及通过 std::function 包装的任何可调用实体。

1.函数以及函数指针

函数

void Func() {
    // 函数体
}

函数指针

void (*funcPtr)() = Func;

2.成员函数指针

class MyClass {
public:
    void memFunc() {
        // 成员函数体
    }
};
// 成员函数指针
void (MyClass::*memFunc)() = &MyClass::memFunc;

3.lamda表达式

这个就不多说了,之前写过,可以去看看

4.函数对象(Func)

struct Func{
    int operator()(int x) {
        return x * 3;
    }
};

这个是重载了 operator() 操作符。stl里大量使用了这种写法,如下图:
在这里插入图片描述

5.通过 std::function 包装的可调用对象

std::function<void()> func = myFunc;
void callFun(std::function<void()> func) {
    func();
}
callFun(myFunc); // 传递函数
callFun(funcPtr); // 传递函数指针
callFun(Func()); // 传递函数对象

std::function 是一个比较通用的,在stl模板中的。还有一种调用是lamda表达式的,都经常使用。

小结

这个总结写了可调用对象,C++中常用的一些调用形式。像函数,函数指针,lamda表达式(这个之前写过),函数对象,通过std::function包装的可调用对象;这些都常用,感兴趣,可以学习学习。感觉还不错,OK,翻篇。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值