news 2025/12/28 5:51:20

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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/25 10:57:45

如何快速掌握GB/T 7714国标引用:学术作者的完整指南

如何快速掌握GB/T 7714国标引用&#xff1a;学术作者的完整指南 【免费下载链接】gbt7714-bibtex-style GB/T 7714-2015 BibTeX Style 项目地址: https://gitcode.com/gh_mirrors/gb/gbt7714-bibtex-style GB/T 7714-2015 BibTeX样式库是中国学术界的排版神器&#xff0…

作者头像 李华
网站建设 2025/12/25 16:04:35

12、基于博弈论的5G绿色移动云计算

基于博弈论的5G绿色移动云计算 1. 引言 绿色代表着一个系统能够高效运行的环境。移动云计算(MCC)的重要系统可分为三层: - 移动设备层:创建任务并将其发送到其他计算存储设备进行计算。 - 通信层:5G通过各种无线网络技术将数据从移动设备传输到云端。 - 云层:接收来…

作者头像 李华
网站建设 2025/12/23 17:22:27

26、6G 时代物联网绿色移动边缘计算探索

6G 时代物联网绿色移动边缘计算探索 无线传感与传感器云架构概述 在当今的科技环境中,无线传感技术发展迅速。输入传感器接收的信号会通过转换器转换为数字输入,以便进行进一步处理。若有需要,数字数据会被相应地转换和存储。下面我们将详细探讨无线传感网络(WSNs)的应用…

作者头像 李华
网站建设 2025/12/27 5:11:39

零基础玩转YOLOv11:3分钟掌握图像分割标注转换技巧

零基础玩转YOLOv11&#xff1a;3分钟掌握图像分割标注转换技巧 【免费下载链接】ultralytics ultralytics - 提供 YOLOv8 模型&#xff0c;用于目标检测、图像分割、姿态估计和图像分类&#xff0c;适合机器学习和计算机视觉领域的开发者。 项目地址: https://gitcode.com/Gi…

作者头像 李华