news 2026/9/2 21:34:47

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/9/2 21:43:22

17、绿色智能电网与地理空间绿色移动边缘计算解析

绿色智能电网与地理空间绿色移动边缘计算解析 绿色智能电网(GSG)概述 随着电力业务的自由化,零售商试图通过调节各国用户的电量供应来获取最大利润。而绿色智能电网(GSG)应运而生,它旨在为用户设备提供一个高效、灵活、通用、持久且极为便捷的移动云计算(MCC)平台。 …

作者头像 李华
网站建设 2026/9/1 23:34:41

18、地理空间绿色移动边缘计算:挑战、解决方案与未来方向

地理空间绿色移动边缘计算:挑战、解决方案与未来方向 1. 移动边缘计算中的现有地理空间应用 近年来,大量地理空间应用在移动边缘计算(MEC)环境中得到开发。这些应用可分为以下七类: | 应用类别 | 具体描述 | | — | — | | 智慧城市服务 | 涵盖交通预测与道路安全、医…

作者头像 李华
网站建设 2026/9/2 21:56:17

5分钟上手缠论技术分析:ChanlunX实战指南

5分钟上手缠论技术分析&#xff1a;ChanlunX实战指南 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 想要入门缠论技术分析却不知从何开始&#xff1f;ChanlunX这个开源项目或许能帮到你。作为一款基于C实…

作者头像 李华
网站建设 2026/9/2 22:25:31

如何快速掌握SMUDebugTool:AMD处理器调试的完整指南

如何快速掌握SMUDebugTool&#xff1a;AMD处理器调试的完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitc…

作者头像 李华
网站建设 2026/9/2 23:10:03

AdGuard浏览器扩展:终极广告拦截与隐私保护解决方案

在当今数字化时代&#xff0c;网络广告和隐私泄露已成为困扰用户的两大难题。AdGuard浏览器扩展作为一款开源免费的广告拦截工具&#xff0c;为用户提供了全方位的网络保护&#xff0c;让您在享受纯净浏览体验的同时&#xff0c;确保个人信息安全无虞。 【免费下载链接】Adguar…

作者头像 李华
网站建设 2026/9/3 2:12:48

Maccy剪贴板管理器:5个步骤让你彻底告别复制粘贴烦恼

Maccy剪贴板管理器&#xff1a;5个步骤让你彻底告别复制粘贴烦恼 【免费下载链接】Maccy Lightweight clipboard manager for macOS 项目地址: https://gitcode.com/gh_mirrors/ma/Maccy 如果你经常在macOS上工作&#xff0c;一定遇到过这样的场景&#xff1a;刚刚复制的…

作者头像 李华