专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

怎么定义一个函数指针,指向一个带有默认值参数的函数

发布时间:2011-06-28 16:16:55 文章来源:www.iduyao.cn 采编人员:星星草
如何定义一个函数指针,指向一个带有默认值参数的函数?
比如如何定义这个函数的函数指针
void fun(int a,int b=0)
{
}

------解决方案--------------------
函数带默认值,他的指针是不可能把这种默认值带过去的。默认值是编译期信息,而你要的是运行时的默认值,这在函数指针是不可实现的。

唯一可以做到的是用functor,用一个函数类对象实现。如果一个类实现了()运算符,他就可以象一个函数来用,而对于你的要求,可以通过实现不同版本的()实现


------解决方案--------------------

既然你能够使用参数的默认值,那我就要假定你用的是C++而不是C。

在C++中,如3楼所述,是用函数子或叫函数对象来实现的。

这里的关键问题在于,普通的函数是不能携带状态的,而函数对象可以。

以下是一个实现。

C/C++ code



#include <cstdio>

using std::printf;

class ff {
public:
    explicit ff(int value = 3)
        : value_(value) {}
    void operator()() {
        printf("%d\n", value_);
    }
private:
    int value_;
};

void fff(ff f) {
    f();
}

int main() {
    fff(ff());
    
    return 0;
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: