符号重载是一个具有特殊名称的函数,你可以简单的认为它是一个方法,并且是带有返回值的方法;它的用法是通过关键字operator加上(运算符的符号)来定义的。相比其他函数一样,符号重载有返回类型和参数列表。
符号重载的多态(方法)
例如下面的函数:
class Rect
{
public double Length;
public double Width;
public double Height;
public double Volume;
// 无参数的构造函数
public Rect()
{
}
// 有参数的构造函数
public Rect(double l,double w,double h)
{
Length = l;
Width = w;
Height = h;
}
~Rect()
{
Console.WriteLine("回收");
}
}
上面方法三(Rect)前的符号"~"是析构函数,当对象被释放的时候触发析构函数,把一个对象赋值为null 然后通过GC垃圾回收之后触发
符号重载的实现
下面的代码演示了重载的实现
执行代码:
创建第一个rect对象
Rect r1 = new Rect(2,5,4);
第二个rect对象
Rect r2 = new Rect(3,6,9);
使用加号把r1和r2相加
Rect r3 = r1 + r2;
Console.WriteLine(r3.Length);
Console.WriteLine(r3.Width);
Console.WriteLine(r3.Height);
Console.WriteLine(r3.Volume);
Console.WriteLine(r1-r2);
Console.WriteLine(r1==r2);
Console.WriteLine(r1!=r2);
当上面的代码被执行时,会产生以下结果:
5
11
13
715
-23
False
True
重载运算符号
加号(+):通过使用+重载并传递两个Rect对象。
减号(-):使用-进行重载,传递两个整型数组,而返回值也是整型数组,把两个整型数组每一个 元素进行相减。
相等(==):上面的方法因为返回值是bool类型,所以如果两个不同方法中的值相等了,那么结果 就为true,反之就为false。
不等(!=):和重载运算符号相等(==)一样,只要满足条件那么,返回值就为true,反之就 为 false。