在日常开发中,我们会经常使用到 ‘=’,‘>’ 等一系列数学符号。
但是只有部分类支持这类操作。如何自定义一个类,让它也拥有这类操作呢。
就需要使用operator来进行函数重载。
operator具体用法如下:
返回类型 operator 符号 (参数)
为了方便了解,我们自定义一个String类来进行说明:
代码如下:
#include <QCoreApplication>
#include <string>
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
class String
{
public:
String(string s)
{
m_s=s;
}
String(){};
void setString(string s)
{
m_s=s;
}
//这里进行字符串长度比较
//一种是写函数
bool Compare(String s1)
{
if(m_s.size()>s1.m_s.size())
{
return true;
}
else
{
return false;
}
}
bool operator >(String s1)
{
if(m_s.size()>s1.m_s.size())
{
return true;
}
else
{
return false;
}
}
private:
string m_s;
};
int main()
{
String s1("hello");
String s2("word");
cout<<"compare s1>s2 "<<s1.Compare(s2)<<endl;
bool istrue=s1>s2;
cout<<"compare s1>s2 "<<istrue;
return 0;
}
运行结果如下:
可以看到2种方法获取的结果是一样的。但是使用重载运算符更方便点。