C语言中函数对象如何定义、使用及实例演示,能否详细解释?

2026-04-19 05:410阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3427个文字,预计阅读时间需要14分钟。

C语言中函数对象如何定义、使用及实例演示,能否详细解释?

如果一个类将运算符重载为成员函数,那么这个类被称为函数对象类,这个类的对象就是函数对象。函数对象是一个对象,看起来像函数调用,实际上执行了函数调用,执行了函数的功能。

如果一个类将()运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象。函数对象是一个对象,但是使用的形式看起来像函数调用,实际上也执行了函数调用,因而得名。

下面是一个函数对象的例子。

#include <iostream> using namespace std; class CAverage { public: double operator()(int a1, int a2, int a3) { //重载()运算符 return (double)(a1 + a2 + a3) / 3; } }; int main() { CAverage average; //能够求三个整数平均数的函数对象 cout << average(3, 2, 3); //等价于 cout << average.operator(3, 2, 3); return 0; }

程序的输出结果是:
2. 66667

()是目数不限的运算符,因此重载为成员函数时,有多少个参数都可以。

average 是一个对象,average(3, 2, 3) 实际上就是 average.operator(3, 2, 3),这使得 average 看上去像函数的名字,故称其为函数对象。

阅读全文

本文共计3427个文字,预计阅读时间需要14分钟。

C语言中函数对象如何定义、使用及实例演示,能否详细解释?

如果一个类将运算符重载为成员函数,那么这个类被称为函数对象类,这个类的对象就是函数对象。函数对象是一个对象,看起来像函数调用,实际上执行了函数调用,执行了函数的功能。

如果一个类将()运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象。函数对象是一个对象,但是使用的形式看起来像函数调用,实际上也执行了函数调用,因而得名。

下面是一个函数对象的例子。

#include <iostream> using namespace std; class CAverage { public: double operator()(int a1, int a2, int a3) { //重载()运算符 return (double)(a1 + a2 + a3) / 3; } }; int main() { CAverage average; //能够求三个整数平均数的函数对象 cout << average(3, 2, 3); //等价于 cout << average.operator(3, 2, 3); return 0; }

程序的输出结果是:
2. 66667

()是目数不限的运算符,因此重载为成员函数时,有多少个参数都可以。

average 是一个对象,average(3, 2, 3) 实际上就是 average.operator(3, 2, 3),这使得 average 看上去像函数的名字,故称其为函数对象。

阅读全文