在程序中我们常常要使用一些判断条件,如a>b,a==b,a
如果a和b是我们定义的某个类的对象,假设这个类为MyClass。
这时候,如果在MyClass中没有对>、<、和==这些运算符进行重载(其实就是在MyClass进行定义),那是没法直接用a>b,a==b,a
因为像<、>、==这些运算符在C++中已有定义,作为C++的标准的一部分,所以我们要重新定义他们的用法时,就要用重载,就是要使用operator关键字。
例如有这么个类
class MyClass
{
int n;
string name;
bool operator ==(MyClass a,MyClass b)
{
return a.n==b.n && a.name==b.name;
}
}
有了上面对==的重载,下面的代码才能编译通过。
MyClass a ,b
if(a==b)
{
/*-----*/
}
运算符重载就是重新运算符定义 、、
比如加号运算符(+)没有重载之前系统 默认是两个数相加 、、1+2=3
你可以重载 成连接字符的功能,如1+2=12;
这个功能 是由你来定义 的
比如说你定义了一个类,类包括一个成员函数add,目的是实现该类的加法语义。如果我们利用运算符重载的话就可以用+这个符合来调用同样实现加法操作的运算符重载函数。这个+比直接写add好看、可读性强。实际上运算符重载就是函数调用的一种方便形式。
运算符重载使得运算符不仅仅能够用在内置类型之间,也可以用在类类型(class type)之间或类类型和内置类型之间,例如C++中最基本的cout<<"Hello world!"就是通过重载cout的类型和字符串类型之间的按位左移运算符实现的……