zoukankan      html  css  js  c++  java
  • 函数类型和函数对象

    在C和C++中,函数是一种类型,原因是可以指向函数的指针。这个指针指向了内存中函数的入口处。(多么有趣的现象!因为这一下子把程序和进程的概念似乎又引入进来了!)

    void (*fPtr)(int );//这是一个变量的定义,指针变量

    由于函数是一种类型,我也就可以使用typedef关键字:

    对于函数:void function (int a);

    typedf void FUNCTION (int a);//定义一种函数类型

    FUNCTION *p=fPtr;//p是指向上面定义的函数类型的指针

    int b=1; 

    fPtr(b);//调用函数

    ————————————————————————————————————————————————————————————

    函数对象

    看下面的一段代码:

    int a=b=3;

    int c=sum(a,b);

    这里sum可以被理解为int sum(int,int)这样的函数。

    但是,这有个缺点,如果上面的代码换为:

    float a=b=3.0;

    float c=sum(a,b);

    那么sum作为一个函数的原型,就必须实现各参数类型对应的函数重载。当然,我们还有更灵活的方法来实现:

    template<class T>
    class Sum{
    public:    
        sum(){};
        T operator()(T a, T b){
            return a+b
            }
    };
    Sum<int> sum;

      函数对象不是函数,它是一个借用了操作符()重载实现类似于函数调用的功能。

  • 相关阅读:
    Pyechart——学习
    matplotlib——散点图、条形图、直方图
    matplotlib——折线图
    寻找n以内的亲密数对
    Golang判断时间点处于今天
    寒假作业3
    寒假作业2
    面向对象程序设计寒假作业1
    自我介绍
    关于cve2019_0708的反弹shell
  • 原文地址:https://www.cnblogs.com/wangpei0522/p/3795520.html
Copyright © 2011-2022 走看看