面向对象之封装十

运算符重载

一.基本概念

概念:让自定义类和结构体能够使用运算符

使用关键字:operator

特点:

1.一定是一个公共的静态方法

2.返回值写在operator前面

3.逻辑处理自定义

作用:

让自定义类和结构体对象可以进行运算

注意:

1.条件运算符需要成对实现

2.一个符号可以多个重载

3.不能使用ref和out

二.基本语法

public static 返回类型 operator 运算符(参数列表){ }

注意:参数类型至少有一个是和类的类型是一样的。

三.实例与使用

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
class Point
{
public int x;
public int y;
public static Point operator +(Point p1,Point p2){
Point p=new Point();
p.x=p1.x+p2.x;
p.y=p1.y+p2.y;
return p;
}
//接下来对运算符加号再进行重载
public static Point operator +(Point p1,int value){
Point p=new Point();
p.x=p1.x+value;
p.y=p1.y+value;
return p;
}
}
//以下是主函数模块
Point p=new Point();
p.x=1;
p.y=1;
Point p2=new Point();
p.x=2;
p.y=2;
Point p3=p+p2;
//相当于为加号新加了一个成员方法(即重载了一个函数),这个成员方法可以把两个自定义类相加。
Point p4=p3+2;
//相当于p3的横坐标加上了2.

四.可重载和不可重载运算符

可重载

算数运算符

+ - * / % ++ –

(注意符号需要的是两个参数还是一个参数)

逻辑运算符

!(逻辑非)

位运算符

^ ~ << >> | &

条件运算符

1.返回值一般是bool值,也可以是其他的

2.相关符号必须配对实现

(重载了大于,一定要重载小于,一定要配对)

> < >= <= == !=

不可重载

逻辑与(&&)

逻辑或(||)

索引符([])

强转运算符(())

特殊运算符:点(.),三目运算符(? : )赋值符号(=)


面向对象之封装十
https://gaster44.github.io/2023/12/24/面向对象之封装十/
作者
huangjinhong
发布于
2023年12月24日
许可协议