不光是C++,实际上C#中同样可以对操作符重载。如:
namespace Com.EVSoft.Math
{
public class Vector3:BaseObject
{
...
......
..
public static Vector3 operator + (Vector3 lVector,double rhs);
public static Vector3 operator + (Vector3 lVector,Vector3 rVector);
public static bool operator ==(Vector3 lVector,Vector3 rVector);
...
......
}
}
上面的代码是一个向量类,分别针对运算符和操作符进行了重载,重载操作符或运算符意味着改变了操作符原有的意思。例如,
...
......
..
Vector3 vec=null;//赋值运算符,是否是原有的意思需要开发者自己看它的定义
if(vec==null) //逻辑运算符,按照Vector3的重载的定义,这里肯定要报错
{
vec=new Vecotr3();
}
namespace Com.EVSoft.Math
{
public class Vector3:BaseObject
{
...
......
..
public static Vector3 operator + (Vector3 lVector,double rhs);
public static Vector3 operator + (Vector3 lVector,Vector3 rVector);
public static bool operator ==(Vector3 lVector,Vector3 rVector);
...
......
}
}
上面的代码是一个向量类,分别针对运算符和操作符进行了重载,重载操作符或运算符意味着改变了操作符原有的意思。例如,
...
......
..
Vector3 vec=null;//赋值运算符,是否是原有的意思需要开发者自己看它的定义
if(vec==null) //逻辑运算符,按照Vector3的重载的定义,这里肯定要报错
{
vec=new Vecotr3();
}