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

文章目录

1,简述

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

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

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

cpp 复制代码
struct 	Point {
    int x , y ;
    // 下面的数据类型是定义的结构体的数据类型
};


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

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

cpp 复制代码
struct Point Node ; 
复制代码
##### 3,运算符的重载

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

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

3.1 ,在结构体中重构

1. friend函数

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

cpp 复制代码
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 {

}

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

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

cpp 复制代码
Point operator * (const Point &a , const Point &b ){}

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

cpp 复制代码
#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 ; 
}
相关推荐
十五年专注C++开发2 分钟前
windows和linux使用system启动进程是一样的吗?
linux·c++·windows·system
Dshuishui4 分钟前
VSCode 环境下编译运行 C++ 项目
c++·ide·vscode
fengci.5 分钟前
php反序列化(复习)(第四章)
android·开发语言·学习·php·android studio
Jasmine_llq5 分钟前
《B3923 [GESP202312 二级] 小杨做题》
开发语言·状态标记算法·顺序输入输出算法·递推迭代算法·循环遍历算法·条件终止算法·累加求和算法
jiayong236 分钟前
第 6 课:第二轮真实重构,拆出任务表格组件
前端·重构
whatever who cares7 分钟前
android中,全局管理数据/固定数据要不要放一起?
android·java·开发语言
liu****12 分钟前
第15届省赛蓝桥杯大赛C/C++大学B组
开发语言·数据结构·c++·算法·蓝桥杯·acm
charlie11451419120 分钟前
嵌入式Linux模块开发——struct module 深度解析:内核模块的核心数据结构
linux·开发语言·数据结构·c
无缘之缘25 分钟前
蓝桥杯手把手教你备战(C/C++ B组)(最全面!最贴心!适合小白!)
c语言·c++·算法·蓝桥杯
吴声子夜歌25 分钟前
ES6——Symbol详解
开发语言·javascript·es6