C/C++编程:std::mem_fn

1059 篇文章 274 订阅

头文件:

#include <functional>


template< class M, class T >
/*unspecified*/ mem_fn(M T::* pm) noexcept;             (C++11)
/*unspecified*/ mem_fn(M T::* pm) noexcept;             (C++20)


template< class M, class T >
constexpr /*unspecified*/ mem_fn(M T::* pm) noexcept;   (C++20)

作用:

  • 函数模板std::mem_fn生成指向成员指针的包装对象,它可以存储、复制以及调用指向成员指针。到对象的引用和指针(含智能指针)可在调用 std::mem_fn 时使用。
  • 常用于:从成员指针创建出函数对象

参数:

  • pm - 指向被包装成员的指针

返回值:

  • std::mem_fn 返回未指定类型的调用包装

示例

存储成员函数和成员对象

#include <iostream>
#include <functional>

using namespace std;

struct Foo {
    void display_greeting() {
        std::cout << "Hello, world.\n";
    }
    void display_number(int i) {
        std::cout << "number: " << i << '\n';
    }
    int data = 7;
};
int main() {
    Foo f;

    auto greet = std::mem_fn(&Foo::display_greeting);
    greet(&f);

    auto print_num = std::mem_fn(&Foo::display_number);
    print_num(&f, 42);

    auto access_data = std::mem_fn(&Foo::data);
    std::cout << "data: " << access_data(&f) << '\n';

    return 0;
}



在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值