zoukankan      html  css  js  c++  java
  • c++STL之函数对象(仿函数)

    概念:

    • 重载函数调用操作符的类, 其对象被称为函数对象;
    • 函数对象使用重载的()时,行为类似函数调用,也叫仿函数;

    本质:函数对象是一个类,不是一个函数;

    函数对象使用:

    - 函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值
    - 函数对象超出普通函数的概念,函数对象可以有自己的状态
    - 函数对象可以作为参数传递

    #include<iostream>
    using namespace std;
    #include <string>
    
    
    class MyAdd
    {
    public:
        int operator()(int v1,int v2)
        {
            return v1 + v2;
        }
    
    };
    
    // 1、函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值
    void test01()
    {
        MyAdd myAdd;
        cout <<  myAdd(10, 10) <<endl;
    }
    
    
    //2、函数对象超出普通函数的概念,函数对象可以有自己的状态
    class MyPrint
    {
    public:
        MyPrint()
        {
            this->count = 0;
        }
        void operator()(string test) const
        {
            cout << test << endl;
            this->count++;
        }
    
        int count; // 内部自己状态
    };
    
    void test02()
    {
        MyPrint myPrint;
        myPrint("hello world");
        myPrint("hello world");
        myPrint("hello world");
        myPrint("hello world");
    
        cout << "myPrint调用次数为: " << myPrint.count << endl;
    }
    
    //3、函数对象可以作为参数传递
    void doPrint(MyPrint & mp, string test)
    {
        mp(test);
    }
    
    void test03()
    {
        MyPrint myPrint;
        doPrint(myPrint, "Hello c++");
    }
    
    int main() {
    
        //test01();
    
        //test02();
    
        test03();
    
        system("pause");
    
        return 0;
    }
  • 相关阅读:
    mysql 数据库备份
    半同步复制
    mysql在线热备
    mysqlxtrabackup备份
    MySQL备份与恢复
    Mysql语句类型
    MySQL的体系结构
    MySQL介绍及安装
    Shell-02-if
    Shell 脚本进阶,经典用法及其案例
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12112380.html
Copyright © 2011-2022 走看看