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

喜欢ヅ旅行 2024-02-24 00:54 193阅读 0赞

文章目录

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

一、括号 () 运算符重载


1、括号 () 运算符介绍

使用类定义对象 ,

  1. Student s;

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

  1. s(10, 20)

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

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

注意分区 下面 3 3 3 种情况 :

  • 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)

  • 最后 , 实现函数体 , 编写具体的运算符操作业务逻辑 ;

    // 重载 括号 () 运算符

    1. int operator()(int a, int b)
    2. {
    3. return a + b;
    4. };

二、完整代码示例


1、Test.cpp 测试类

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

  1. #include "iostream"
  2. using namespace std;
  3. class Student
  4. {
  5. public:
  6. // 重载 括号 () 运算符
  7. int operator()(int a, int b)
  8. {
  9. return a + b;
  10. };
  11. // 正常的函数
  12. int add(int a, int b)
  13. {
  14. return a + b;
  15. };
  16. };
  17. int main() {
  18. Student s;
  19. // 调用 括号 运算符
  20. cout << "s(1, 2) = " << s(1, 2) << endl;
  21. // 正常的函数调用
  22. int a = s.add(1, 2);
  23. cout << "s.add(1, 2) = " << s.add(1, 2) << endl;
  24. // 控制台暂停 , 按任意键继续向后执行
  25. system("pause");
  26. return 0;
  27. }

4、执行结果

执行结果 :

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

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,193人围观)

还没有评论,来说两句吧...

相关阅读