我是靠谱客的博主 落后猫咪,最近开发中收集的这篇文章主要介绍c++仿函数介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

仿函数

  • 介绍
    • 仿函数使用
      • 仿函数 重载函数调用运算符()

介绍

仿函数又称函数对象,是一种能够行使函数功能的类,该类重载了operator()运算符,调用仿函数的时候实际上就是通过类对象调用重载后的operator操作符,重载operator()和重载普通的函数效果相同,当参数类型不同时会执行不同的代码逻辑。

仿函数使用

#include <iostream>
#include<typeinfo>
using namespace std;

class A
{
public:
    int operator ()(int a,int b)
    {
        return a+b;
    }
    double operator ()(double a,double b)
    {
        return (a+b)*2;
    }
};

int main()
{
    A ob;
    auto c1=ob(1,2);
    cout<<typeid(c1).name()<<" "<<c1<<endl;
    auto c2=ob(11.2,3.5);
    cout<<typeid(c2).name()<<" "<<c2<<endl;

}

在这里插入图片描述

#include<iostream>
using namespace std;

using namespace std;
 class Fun {
public:
 int my_add(int x,int y)
     {
         return x+y;
     }
     //重载()
     //第一个()是重载的符号 第二个()是标明要传参
     int operator()(int x,int y)
     {
         return x+y;
         }
     };
int main()
 {
     Fun fun;
     cout<<fun.my_add(100,200)<<endl;
     cout<<fun.operator ()(100,200)<<endl;
     //优化 fun和()结合 就会自动寻找()运算符
     cout<<fun(100,200)<<endl;
     //此处 fun(100,200)不是一个真正的函数 仅仅是一个对象名和()结合 调用()重载运 算符而已
     //fun不是函数名 只是fun(100,200)类似一个函数调用 所以将fun(100,200)叫做 仿函数
     //此处的Fun是类名称
     //Fun()匿名对象 Fun()(100,200) 就是匿名对象(100,200)
    cout<<Fun()(100,200)<<endl;//了解
}

在这里插入图片描述

仿函数 重载函数调用运算符()

#include<iostream>
using namespace std;

class MyAdd
{
public:
 //本质就是成员函数 函数名叫operator()
int operator()(int a, int b)
 {
         cout<<"调用了operator() int int"<<endl;
         return a+b;
         }
  int operator()(int a, int b, int c)
     {
         cout<<"调用了operator()int int int "<<endl;
         return a+b+c;
         }
     };
int main()
 {
     MyAdd ob1;
     cout<<ob1.operator ()(10,20)<<endl;
     //编译器优化
     //严格意义:ob1是对象 和()结合 调用operator ()成员函数
     //ob1(100,200) ob1本质是对象不是函数名 只是形式像函数调用
    //叫做仿函数
     cout<<ob1(100,200)<<endl;
     cout<<ob1(100,200,300)<<endl;
     cout<<MyAdd()(1000,2000)<<endl;
   }

在这里插入图片描述

最后

以上就是落后猫咪为你收集整理的c++仿函数介绍的全部内容,希望文章能够帮你解决c++仿函数介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部