栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++知识点——仿函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++知识点——仿函数

仿函数,并不是函数,却有着类似于函数的行为,简单地说就是重载括号运算符号。
把对象当作一个函数用
仿函数拥有自己的数据成员,意味着仿函数拥有状态;

#include
#include
using namespace std;

struct ADD {
	int num;
	ADD(int a){  //构造函数
		num = a;
	}
	int operator()(int x) {  //重载括号运算符
		return x + num;
	}
};

struct small {
	bool operator()(int a, int b) {
		return a < b; //如果第一个数小于第二个数返回true,排序是从小到大排列。返回真第一个参数的优先级高。
	}
};

class myclass
{
public:
	myclass(int x) : x_(x) {};
	int operator()(const int n) const { //这里加上const比较好,保护const int n,n不会被改变
		return n * x_;
	}
private :
	int x_;
};

int main(int argc, char** argv)
{
	// 1 struct结构体仿函数
	ADD add1(1);
	ADD add23(23);
	cout< -4, -8, 2, -9,0 };
	int len = sizeof(a) / sizeof(a[0]);
	//sort(a, a + len, small());  //这里small()也是匿名对象(括号不要忘了), 这句需要加上include
	sort(a, a + len, less());  //stl自带,从小到大
	sort(a, a + len, greater());  //stl自带,从大到小
	for(int i=0;i<=len-1;i++){ 
		cout << a[i] << endl;  //a
	}
	cout << "-----------" << endl;
	// 3 class类仿函数
	myclass C(2);
	cout << C(10) << endl;

	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876775.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号