news 2026/2/24 19:38:44

C++仿函数与转换函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++仿函数与转换函数

在初学过程中,发现容易混淆仿函数和转换函数,故在此次进行记录。

仿函数:又称函数对象,是一个重载了operator()的类的实例。它的核心目的是行为模拟,让对象可以像函数一样被调用。

// 定义一个仿函数,用于判断一个数是否是偶数 class IsEven { public: bool operator()(int number) const { // 重载 (),注意:不能用static修饰! return (number % 2 == 0); } }; int main() { std::vector<float> vec = {1, 3, 4, 5, 6}; IsEven isEven; int evenCount = std::count_if(vec.begin(), vec.end(), isEven); // 使用 std::count_if 算法 qDebug() << "偶数个数:" << evenCount; return 0; } 程序输出:偶数个数: 2

转换函数:又称类型转换运算符,是一种特殊的成员函数,它允许一个类的对象被隐式或显式地转换为另一种类型。

// 定义一个转换函数类 class TransFunc { public: TransFunc(int num, int denom) : m_numerator(num) , m_denominator(denom) {} // 定义一个转换函数,将 TransFunc对象转换为double operator double() const { return static_cast<double>(m_numerator) / m_denominator; } private: int m_numerator; int m_denominator; }; // 打印double类型数据 void printDouble(double d) { std::cout << "The value is: " << d << std::endl; } int main() { TransFunc t(1, 2); // 1/2 // 显式转换 double d = static_cast<double>(t); // d 将会是 0.5 std::cout << "Explicit cast: " << d << std::endl; // 隐式转换:printDouble 函数需要一个 double, // 编译器发现 Rational 有一个到 double 的转换函数,于是自动调用它 printDouble(t); // r 被隐式转换为 0.5 并传递给函数 return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 18:05:31

22、绿色物联网与移动云计算融合:架构、应用与未来挑战

绿色物联网与移动云计算融合:架构、应用与未来挑战 1. 物联网 - 移动云计算(IoT - MCC)架构 如今,物联网设备在各种应用中的广泛使用产生了海量数据。这些大规模数据需要新的架构和技术来进行数据管理,包括数据捕获和处理。物联网 - 移动云计算(IoT - MCC)架构应运而生…

作者头像 李华
网站建设 2026/2/23 4:28:17

29、新计算范式研究推进策略与绿色移动云计算研究方向

新计算范式研究推进策略与绿色移动云计算研究方向 在新的计算范式研究领域,为了推动研究发展并产生更大的影响力,有一系列有效的策略可供采用,同时绿色移动云计算也有诸多值得探索的未来研究方向。 新计算范式研究推进策略 使用模拟器 :模拟器对于研究人员制定问题和在…

作者头像 李华
网站建设 2026/2/24 4:48:50

算法题目优选(蓝桥杯备战)--2

文章目录前言分享题目清单1.奶牛晒衣服2.砝码称重3.螺旋矩阵4.“非常男女”计划5.次大值6.单词接龙7.瑞士轮8. 奶酪前言 这些题目摘录于洛谷&#xff0c;好题&#xff0c;典型的题&#xff0c;考察各类算法运用&#xff0c;可用于蓝桥杯及各类算法比赛备战&#xff0c;算法题目…

作者头像 李华
网站建设 2026/2/23 21:42:59

英雄联盟游戏助手:让你的排位赛效率翻倍的秘密武器

还在为繁琐的游戏操作而烦恼吗&#xff1f;想要在英雄联盟中快速提升段位却总是卡在操作细节上&#xff1f;今天为你介绍一款能够真正改变游戏体验的智能助手&#xff0c;它将成为你冲击更高段位的最佳搭档。 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工…

作者头像 李华
网站建设 2026/2/24 12:18:32

SuperCom串口调试终极指南:从新手到专家的快速精通教程

SuperCom串口调试终极指南&#xff1a;从新手到专家的快速精通教程 【免费下载链接】SuperCom SuperCom 是一款串口调试工具 项目地址: https://gitcode.com/gh_mirrors/su/SuperCom SuperCom串口调试工具是嵌入式开发和硬件通信领域的专业利器&#xff0c;支持多串口监…

作者头像 李华
网站建设 2026/2/24 11:31:00

科学文库CAJ文档处理方案:提升知识管理效率的工具

科学文库CAJ文档处理方案&#xff1a;提升知识管理效率的工具 【免费下载链接】ScienceDecrypting 项目地址: https://gitcode.com/gh_mirrors/sc/ScienceDecrypting 还在为科学文库下载的文档只能在特定时间内使用而烦恼吗&#xff1f;是否曾经遇到过重要的学术论文突…

作者头像 李华