【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 ; 
}
相关推荐
梦星辰.4 分钟前
VSCode CUDA C++进行Linux远程开发
linux·c++·vscode
whoarethenext1 小时前
C++ OpenCV 学习路线图
c++·opencv·学习
闻缺陷则喜何志丹1 小时前
【强连通分量 缩点 拓扑排序】P3387 【模板】缩点|普及+
c++·算法·拓扑排序·洛谷·强连通分量·缩点
钮钴禄·爱因斯晨1 小时前
Java 面向对象进阶之多态:从概念到实践的深度解析
java·开发语言·数据结构
鸽子炖汤1 小时前
Java中==和equals的区别
java·开发语言·jvm
有个傻瓜1 小时前
PHP语言核心技术全景解析
开发语言·kubernetes·php
菥菥爱嘻嘻1 小时前
JS手写代码篇---手写ajax
开发语言·javascript·ajax
hutaotaotao1 小时前
c++中的输入输出流(标准IO,文件IO,字符串IO)
c++·io·fstream·sstream·iostream
江梦寻1 小时前
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
开发语言·后端·python·macos·架构·策略模式
AL流云。2 小时前
【优选算法】C++滑动窗口
数据结构·c++·算法