C++ 11 std::mem_fn

mem_fn
想到member function 成员函数

这还真就是用来调用成员函数的
普通的函数我们通过函数指针可以调用,但对于成员函数的调用稍微复杂一点,需要对象,也即this指针
因为成员函数和对象并不存储在一起,一个对象的内存空间不包括函数代码,否则每个对象都包含自己的函数代码,内存就比较浪费
看下面的例子就懂了

#include <functional>
#include <iostream>

struct Foo {
    void display_number(int i) {
        std::cout << "number: " << i << '\n';
    }
    int data = 7;
};

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

    auto access_data = std::mem_fn(&Foo::data);//专门获取对象中data值的函数
    std::cout << "data: " << access_data(f) << '\n';//传入对象f,即获取f的data值
}

原文链接: https://www.cnblogs.com/lxzbky/p/17096810.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++ 11 std::mem_fn

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/399837

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月14日 上午9:35
下一篇 2023年4月14日 上午9:35

相关推荐