C++运算符重载的格式:
operator 运算符 比如要重载 != 运算符 : operator !=
下面是一个例子:
class DemoText{
DemoText(string str, int num)
{
m_text = str; m_number = num;
}
string m_text;
int m_number;
}
这里来定义两个对象:
DemoText demo1("hh", 999);
DemoText demo2("ff", 888);
如果在实际应用中需要比较这两个对象的内容,而且使用的场景比较多,或者想要代码看起来更易懂和简洁,就可以用到运算符重载。
如上,想要比较两个对象里面的内容,demo1 != demo2 ,有两种运算符重载的方式,一种是作为成员函数,一种是作为全局函数的方式。
作为成员函数:
函数声明: bool operator != (const DemoText &demo) const;
函数定义:
bool DemoText::operator != (const DemoText &demo) const
{
//this对象就是放在运算符左边的对象,如:demo1 != demo2 this就表示demo1
if((this->m_text != demo.m_text) || (this->m_number != demo.m_number))
{
return true;
}
return false;
}
//这样在其他地方就可以直接使用!=符号来进行比较,不用再去单独列出每个成员变量来进行比较,
//可以说是一种很方便的使用
//example:
if(demo1 != demo2)
{
*****
}
//也可以这样使用,比较直观,但是个人不推荐
if(demo1.operator!=(demo2))
作为一个全局函数:(省略函数声明)
bool operator != (const DemoText &demo1, const DemoText &demo2)
{
if((demo1.m_text != demo2.m_text) || (demo1.m_number != demo2.m_number))
return true;
return false;
}
//使用
if(demo1 != demo2)
{
*******
}