当前位置: 首页 > article >正文

C++入门基础知识148—【关于C++ 二元运算符重载】

成长路上不孤单😊😊😊😊😊😊

【14后😊///C++爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】

今日分享关于C++ 二元运算符重载的相关内容!

关于【C++二元运算符重载】

目录:

  • 一、什么是二元运算符重载
  • 二、二元运算符重载的实现方式
  • 三、二元运算符重载的应用场景
  • 四、一元运算符和二元运算符的区别
  • 五、二元运算符重载实例

运算符重载:运算符重载是C++的一项强大功能。通过重载,可以扩展C++运算符的功能,使它们能够操作用户自定义的数据类型,增加程序代码的直观性和可读性,运算符重载是个强大而有意思的功能,本篇博文主要分享的是二元运算符重载!

一、什么是二元运算符重载

二元运算符重载是指在编程中,允许用户自定义运算符的行为,使其能够应用于自定义的数据类型。二元运算符重载涉及两个操作数,常见的二元运算符包括加号(+)、减号(-)、乘号(*)和除号(/)等。

二、二元运算符重载的实现方式

在C++中,二元运算符重载可以通过成员函数和友元函数两种方式实现:

  1. 成员函数重载‌:在类内部定义一个成员函数,该函数使用operator+()等运算符作为函数名,并接受一个或两个参数(通常是类的对象)。例如,定义一个坐标类Coordinate,并在类中声明成员函数operator+(),参数是另一个Coordinate对象的引用,实现坐标相加的功能‌1。

  2. 友元函数重载‌:通过friend声明将一个全局函数声明为友元函数,使其能够访问类的私有成员。友元函数也可以重载运算符,参数通常是两个类的对象的引用。例如,重载加号运算符时,可以定义一个全局函数operator+(),接受两个Coordinate对象的引用,并返回一个新的Coordinate对象‌1。

三、二元运算符重载的应用场景

二元运算符重载常用于自定义数据类型,如坐标、向量等。通过重载加号运算符,可以实现自定义类型的数学运算,如坐标相加、向量相加等。例如:

  • 坐标相加‌:定义一个坐标类Coordinate,通过成员函数或友元函数重载加号运算符,实现两个坐标相加的功能‌1。
  • 向量相加‌:定义一个向量类,通过重载加号运算符,实现两个向量的相加‌2。

四、一元运算符和二元运算符的区别

操作数数量
‌一元运算符和二元运算符的主要区别在于所需的操作数数量。‌一元运算符只需要一个操作数,而二元运算符需要两个操作数。‌

一元运算符的定义和例子
一元运算符只需要一个操作数。例如,在C语言中,++a和--a都是一元运算符,分别表示自增和自减操作。

二元运算符的定义和例子
二元运算符需要两个操作数。例如,加法(+)、减法(-)、乘法(*)、除法(/)等都是二元运算符。

运算等级和运算的本质
运算等级是指不同运算的优先级和结合性。数学上的运算本质上是集合之间的映射关系,通过已知量的组合获得新的量。

五、二元运算符重载实例

二元运算符需要两个参数,下面是二元运算符的实例。我们平常使用的加运算符( + )、减运算符( - )、乘运算符( * )和除运算符( / )都属于二元运算符。就像加(+)运算符。

下面的实例演示了如何重载加运算符( + )。类似地,您也可以尝试重载减运算符( - )和除运算符( / )。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

#include <iostream>

using namespace std;

class Box

{

   double length;      // 长度

   double breadth;     // 宽度

   double height;      // 高度

public:

   double getVolume(void)

   {

      return length * breadth * height;

   }

   void setLength( double len )

   {

       length = len;

   }

   void setBreadth( double bre )

   {

       breadth = bre;

   }

   void setHeight( double hei )

   {

       height = hei;

   }

   // 重载 + 运算符,用于把两个 Box 对象相加

   Box operator+(const Box& b)

   {

      Box box;

      box.length = this->length + b.length;

      box.breadth = this->breadth + b.breadth;

      box.height = this->height + b.height;

      return box;

   }

};

// 程序的主函数

int main( )

{

   Box Box1;                // 声明 Box1,类型为 Box

   Box Box2;                // 声明 Box2,类型为 Box

   Box Box3;                // 声明 Box3,类型为 Box

   double volume = 0.0;     // 把体积存储在该变量中

   // Box1 详述

   Box1.setLength(6.0);

   Box1.setBreadth(7.0);

   Box1.setHeight(5.0);

   // Box2 详述

   Box2.setLength(12.0);

   Box2.setBreadth(13.0);

   Box2.setHeight(10.0);

   // Box1 的体积

   volume = Box1.getVolume();

   cout << "Volume of Box1 : " << volume <<endl;

   // Box2 的体积

   volume = Box2.getVolume();

   cout << "Volume of Box2 : " << volume <<endl;

   // 把两个对象相加,得到 Box3

   Box3 = Box1 + Box2;

   // Box3 的体积

   volume = Box3.getVolume();

   cout << "Volume of Box3 : " << volume <<endl;

   return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:

总结

二元运算符重载是C++等编程语言提供的一种机制,允许用户自定义运算符的行为,使其适用于自定义的数据类型。通过成员函数和友元函数两种方式实现,可以增强代码的可读性和灵活性。


http://www.kler.cn/a/392469.html

相关文章:

  • Java爬虫技术:按关键字搜索VIP商品详情
  • WPF+MVVM案例实战与特效(四十七)-实现一个路径绘图的自定义按钮控件
  • VS Code AI开发之Copilot配置和使用详解
  • FFmpeg来从HTTP拉取流并实时推流到RTMP服务器
  • 如何在 Scrum 管理中化解团队冲突?
  • 我的创作纪念日(五年)
  • C#语言:现代软件开发的核心工具
  • shardingsphere5.5.1基于spring体系的集成-数据脱敏04
  • uni-app表格带分页,后端处理过每页显示多少条
  • 深入理解接口测试:实用指南与最佳实践5.0(一)
  • Scala的List习题
  • 鸿蒙next版开发:相机开发-录像(ArkTS)
  • 算法训练(leetcode)二刷第二十三天 | 455. 分发饼干、*376. 摆动序列、53. 最大子数组和
  • 机器学习 笔记
  • 在 Ubuntu 上安装 `.deb` 软件包有几种方法
  • 【数据治理】你知道如何做静态脱敏吗?
  • TTL器件和CMOS器件的逻辑电平
  • 【动态规划】打家劫舍类问题
  • wordpress实用功能A5资源网同款 隐藏下载框 支付框 需要登录才能查看隐藏的内容
  • 系统架构设计师论文:论软件维护方法及其应用
  • git同步fork和原始仓库
  • 【C#设计模式(5)——原型模式(Prototype Pattern)】
  • ubuntu24.04安装matlab失败
  • PDF 转 Word——10个实用优质工具大揭秘!
  • 大数据学习13之Scala基础语法(重点)
  • Redis做分布式锁