【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 ; 
}
相关推荐
个 人 练 习 生3 分钟前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
垆边人似月.11 分钟前
华为机试题 :有效的括号
c++·算法·华为
2601_9669496512 分钟前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
坤坤子吖15 分钟前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
奋斗的阿狸_198625 分钟前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
weixin1997010801640 分钟前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存
神仙别闹1 小时前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
ACP广源盛139246256731 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
niucloud-admin1 小时前
JAVA V6 多商户商城 开发文档——JAVA服务端
java·开发语言
轻舟技术A1 小时前
Pi 的 Rust 实现来了:rpi,不止一个终端 Agent
开发语言·后端·rust