当前位置: 首页 > news >正文

C++ 中函数对象的形式概述

什么是函数对象

我们都知道对象类型和函数类型是 C++ 中的两种不同类型。而当一个对象可以像函数一样进行调用时,这个对象就是函数对象。

最简单的例子就是在 C 语言中非常常见的函数指针,这个就是一个非常典型的函数对象。而到了 C++ 中对函数对象做了进一步的扩充。

C++11 前

函数指针

首先我们先来看在 C 语言中的函数指针的使用方式。

C 语言中的排序方式

返参规则:

  • 负数:参数 1 < 参数 2
  • 正数:参数 1 > 参数 2
  • 0:参数 1 = 参数 2
#include<stdlib.h> /** * @param ptr 首地址 * @param count 序列数量 * @param size 单个元素大小 * @param comp 比较方式 */ void qsort(void *ptr, size_t count, size_t size, int (*comp)(const void *, const

这是非常典型的 C 语言式接口,通过前三个参数确定数组的状态,最后一个 comp 进行规则确定。

在使用时请注意,由于可能出现的数据移除问题,不要将两个数直接加减比较。

#include <limits.h> #include <stdio.h> #include <stdlib.h> int cmp(const void *a, const void *b) { int arg1 = *(const int *)a; int arg2 = *(const int *)b; // 递增排序 return (arg1 > arg2) - (arg1 < arg2); // 直接加减会出现数据溢出问题 // return arg1 - arg2; } int main(void) { int arr[] = {INT_MAX, INT_MIN, -1, 0, 1}; const int length = sizeof(arr) / sizeof(arr[0]); qsort(arr, length, sizeof(arr[0]), cmp); for (int i = 0; i < length; i++) { printf("%d ", arr[i]); } }
http://www.jsqmd.com/news/850216/

相关文章:

  • 3步解锁Windows隐藏音质:免费工具让普通音箱变HIFI
  • Hitboxer:终极键盘映射神器,彻底解决游戏输入冲突问题
  • 嵌入式开发板网络配置实战:直连、路由、交换机模式详解与排错指南
  • 源代码论文分享|基于 Vue.js 的客户关系管理系统 CRM!
  • 如何用3步将B站视频变成文字稿?这个智能转录工具让你告别手动记录
  • 3大核心技术方案:WaveTools如何解决鸣潮性能优化与数据管理难题
  • AArch64调试机制:Watchpoint与Software Step详解
  • 终极指南:3步掌握FakeLocation应用级虚拟定位保护隐私
  • 避坑指南:用IDEA写Spark程序时,你可能会遇到的5个典型错误及解决方法(含winutils.exe配置)
  • 启扬RK3568开发板OpenHarmony 4.0适配全流程与实战指南
  • 应用级虚拟定位实战:FakeLocation让你的手机位置随心所欲
  • 告别手动拖拽!用代码智能生成专业图表:Draw.io Mermaid插件终极指南
  • C语言printf/scanf格式化I/O深度解析:从基础原理到嵌入式实战
  • Seraphine:英雄联盟玩家的终极智能BP助手与战绩查询工具完全指南
  • 探讨专业的汽车改色贴膜商家,人鱼汽车贴膜靠谱吗 - myqiye
  • 小米澎湃OS 2:从异构硬件统一到端侧AI的跨端智能融合体验
  • 拯救者笔记本终极优化指南:5个必知技巧彻底释放硬件潜能
  • 不只是器件被锁:深入Cadence Allegro中FIXED属性,教你高效管理设计保护与解锁
  • 蔡司三维扫描仪厂家终局进化:为什么“数据标准化能力”正在决定制造业上限?
  • LabVIEW FPGA图形化编程避坑指南:从Verilog流水灯到IP集成节点的完整配置流程
  • Spring Boot 自动装配源码
  • 别再手动调相机了!用CinemachineFreeLook快速搞定Unity第三人称视角(附完整配置流程)
  • C/C++多线程编程:pthread_mutex锁的三种初始化方式,你真的用对了吗?
  • 分析有实力的智能软水机、品质净水及用专利树脂的软水机品牌哪个口碑好 - myqiye
  • 工业时序数据库选型指南:从Excel到专业时序库的进化之路
  • 机器人测试中的重复性与准确性原理与实践
  • Windows安卓子系统终极指南:5步打造完美移动应用体验
  • 新芯股份IPO被终止:年营收43亿,净利2亿 曾拟募资48亿
  • 逆向工程实战:深度解析ncmdump如何破解NCM音频加密格式
  • R型变压器与稳压电源:解决电压不稳跳闸,保障电器安全