c++ Primer 5th Edition:指向成员函数的指针



你好,我有这段文字来自c++入门第5版:

function<bool (const string&)> fcn = &string::empty;find_if(svec.begin(), svec.end(), fcn);

这里我们告诉function empty是一个可以带string对象调用并返回bool类型的函数。通常,将执行成员函数的对象传递给隐式this形参。当要使用function为成员函数生成可调用对象时,必须"翻译"代码,使隐式形参显式。

所以他的意思是:"当我们想使用函数…使隐式参数显式化?

指成员函数的隐式this形参。它们获得一个指针,指向传递到底层的当前对象。std::function具有将隐式参数转换为显式参数的魔力:

#include <iostream>
#include <functional>
struct foo {
void bar() { std::cout << "Hello Worldn";}
};
int main() {
std::function< void (foo&)> g = &foo::bar;
foo f;
f.bar();   // bar takes no parameters, but implicitly it gets a pointer to f
g(f);      // g(f) explicitly gets the parameter
}

对于f.bar(),它的方法调用语法告诉我们在对象f上调用barf可以说是bar的隐式形参。对于g(f),该参数是显式传递的。


PS:当然它不是"魔法",但我理解这个问题是关于隐式参数的一般含义,而解释std::function如何将成员函数转换为自由可调用对象可能是另一个问题的主题。

相关内容

  • 没有找到相关文章

最新更新