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

【C++语法讲解】 | 运算符重构 | 三种运算符的重构方式 |代码演示

文章目录

          • 1,简述
          • 2,结构体的定义
            • 1,结构体的声明
            • 2,结构体的申请
          • 3.1 ,在结构体中重构
          • 3.2 在结构体外进行重构

1,简述

通常情况下,我们会创建一些简单的数据结构以应对日常的算法使用,为了方便运算符的使用,我们要进行运算符的相关学习,运算符存在 + , - , * , % , / 这些大类,我们在重构的时候一般也只重构这些运算符,为了方便运算而存在的,下面我们首先讲解一下结构体的定义,因为运算符的重构一般情况下是在结构体中存在的,下面我们来了解一下大概的实现流程。

2,结构体的定义
1,结构体的声明

结构体的声明是有固定的结构的,所在位置一般在主函数的外面

struct 	Point {int x , y ;// 下面的数据类型是定义的结构体的数据类型
};// 当然也可以一开始的时候就进行初始化 如下 : 
struct Point{int x , y ;
}Node[N] ; 
//数组甚至还可以是单个变量
2,结构体的申请

结构体的申请一般来说是比较简单的,和一般的数据结构一样,使用的是 “struct + 数据结构 + 变量名称” 的办法 。

struct Point Node ; 
##### 3,运算符的重载

介绍完结构体之后我们应该再想一想,运算符怎么进行重构?分为几种方式呢 ?

大致上我们可以把他们分成两种情况 : 在结构题中进行重构,在结构体外进行重构。首先是在结构体中重构是我比较喜欢的一种重构方式,这样的数据结构被打包到一个结构体中是更加的稳定!!!(个人认为),下面我们来学习一下这种数据结构。

3.1 ,在结构体中重构

1. friend函数

使用 friend 函数 进行重构的规则如下 :

struct Point{int x ,y ;friend bool operator < (Point a , Point b){/*函数主体 : if(x.a==y.a)return a.y < b.x ; return a.x < b.x ; */}
}// 主要的分支 : friend 变量类型 operator (运算符) ( 重载结构 a , 重载结构 b ){} 

2,自身重构

使用自身重构的表现就是把上面的朋友变量的第一个转化成为自身的变量名称 ;

主要的结构应该是 : 变量类型 operator 运算符 ( const Point & a ) const {

}

struct Point {int x , y ;bool operator < (const Point &a)const{/*	下面的函数为实现的主体内容 ; */} 
}
3.2 在结构体外进行重构

只有一种办法,实际上我觉得就像简单的函数的设置一样,直接上代码

Point operator * (const Point &a , const Point &b ){}

这大概就是重载运算符的全部内容了,简单移动,下面我们使用这三种方法对一种数据结构进行重构总结一下,最后实现一个总程序代码供大家学习借鉴

#include <iostream>
using namespace std ;
struct Point{int x , y ;friend Point operator+ (Point a , Point b){Point c ; c.x=a.x+b.x;c.y=a.y+b.y;return c ;}Point operator- (const Point &a)const{Point c ;c.x=x-a.x;c.y=y-a.y;return c ; }
};Point operator * ( const Point &a , const Point &b ){Point c ;c.x=a.x*b.x;c.y=a.y*b.y;return c ; 
}int main () {return 0 ; 
}
http://www.lryc.cn/news/221714.html

相关文章:

  • [100天算法】-寻找峰值(day 63)
  • Go语言开发环境安装,hello world!
  • 记CVE-2022-39227-Python-JWT漏洞
  • 软件测试/测试开发丨如何利用ChatGPT自动生成测试用例思维导图
  • 【编程语言发展史】Unity开发语言的历史发展
  • springboot http添加请求头 添加请求证书
  • 【Qt之数据库操作】
  • 数据结构(c语言版) 队列
  • kimera论文阅读
  • golang gorm通过泛型实现通用单表增删改
  • 十、K8S之ConfigMap
  • python飞书群机器人通过webhook发送消息
  • 埃隆·马斯克的 AI 聊天机器人 Grok 已经上线
  • 【代码随想录】算法训练营 第十五天 第六章 二叉树 Part 2
  • 使用ssl_certificate_by_lua指令动态加载证书
  • Qt中Opencv转Qimage出现重影或者颜色不对
  • upload-labs-1
  • 【vite配置路径别名@】/启动配置
  • 3. List
  • Django初窥门径-oauth登录认证
  • 数学到底在哪里支撑着编程?
  • Python模块ADB的, 已经 pyadb
  • 猫头虎分享从Python到JavaScript传参数:多面手的数据传递术
  • 注解汇总:Spring 常用的注解
  • 合肥工业大学操作系统实验5
  • 基于SpringBoot+Vue的点餐管理系统
  • C# 继承,抽象,接口,泛型约束,扩展方法
  • mysql的备份和恢复
  • 【机器学习3】有监督学习经典分类算法
  • lv11 嵌入式开发 计算机硬件基础 1