【C++】运算符重载 ⑬ ( 括号 () 运算符重载 | 完整代码示例 )
  K1I6GvxBEuyy 2023年11月02日 77 0



文章目录

  • 一、括号 () 运算符重载
  • 1、括号 () 运算符介绍
  • 2、括号 () 运算符重载
  • 二、完整代码示例
  • 1、Test.cpp 测试类
  • 4、执行结果







一、括号 () 运算符重载




1、括号 () 运算符介绍



使用类定义对象 ,

Student s;

对 对象 s 使用 括号运算符 , 并在括号中 输入 两个值 ,

s(10, 20)

上述写法 , 与函数调用很像 , 只是 s 不是函数名 , 而是一个 对象的 名称 ;

该 括号 () 操作符 被重载了 ;



注意分区 下面 【C++】运算符重载 ⑬ ( 括号 () 运算符重载 | 完整代码示例 )_运算符

  • s(10, 20) 括号运算符重载 ;
  • Student s(10, 20) 构造函数调用 ;
  • s.add(1, 2) 正常的函数调用 , 调用 s 对象中的 add 函数 ;


2、括号 () 运算符重载



使用 成员函数 实现 等于判断 == 运算符重载 :

  • 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载的运算符 ,
  • Student s; 先声明对象 s , 之后在 s 的基础上使用 括号 () 操作符 ;
  • 使用时用法为 s(10, 20) ;
  • 函数名是 operator() ;
operator()
  • 然后 , 根据操作数 写出函数参数 , 参数一般都是 对象的引用 ;
  • 括号运算符 使用时用法为 s(10, 20) ;
  • 左操作数 : 其中 左操作数 是 s , 这里通过 this 指针调用 , 不需要声明在参数中 ;
  • 若干右操作数 : 右操作数 是 10, 20 ; 该操作数需要声明在参数中 , 注意 普通数据类型 直接声明 , 对象数据类型 需要声明 为 引用类型 ;
  • 上述两个是对象类型 , 对象一般传入 指针 或 引用 , 由于是基础数据类型 , 这里传入基础数据类型 ; 如果是 对象类型 , 则传入引用 ;
operator()(int a, int b)
  • 再后 , 根据业务完善返回值 , 返回值可以是 引用 / 指针 / 元素 ;
  • 此处返回值根据需求即可 ;
int operator()(int a, int b)
  • 最后 , 实现函数体 , 编写具体的运算符操作业务逻辑 ;
// 重载 括号 () 运算符
	int operator()(int a, int b)
	{
		return a + b;
	};






二、完整代码示例




1、Test.cpp 测试类



下面的 Student 类的 括号 () 运算符被重载了 , 可以通过 Student 实例对象调用 括号 运算符 ;

#include "iostream"
using namespace std;

class Student
{
public:
	// 重载 括号 () 运算符
	int operator()(int a, int b)
	{
		return a + b;
	};

	// 正常的函数
	int add(int a, int b)
	{
		return a + b;
	};
};

int main() {

	Student s;

	// 调用 括号 运算符
	cout << "s(1, 2) = " << s(1, 2) << endl;

	// 正常的函数调用
	int a = s.add(1, 2);
	cout << "s.add(1, 2) = " << s.add(1, 2) << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
}



4、执行结果



执行结果 :

s(1, 2) = 3
s.add(1, 2) = 3
请按任意键继续. . .

【C++】运算符重载 ⑬ ( 括号 () 运算符重载 | 完整代码示例 )_c++_02


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
K1I6GvxBEuyy
作者其他文章 更多