C++类和对象-重载运算符
运算符重载:采用operator对运算符进行重新定义,本文将对+、++、<<、=、==进行示例,其余运算符可推。
## 重载加号运算符 加号运算符可以采用成员函数、全局函数两种方式重载。
成员函数重载+: 1
2
3
4
5
6person operator+(person &per)
{
person temp;
temp.m_A = this->m_A + per.m_A;
return temp;
}1
2
3
4
5
6person operator+(person& p1, person& p2)
{
person temp;
temp.m_A = p1.m_A + p2.m_A;
return temp;
}1
2
3
4
5person &operator++()//前置返回引用才能嵌套
{
m_A++;
return *this;
}1
2
3
4
5
6person operator++(int)//后置需要占位参数
{
person temp = *this;
m_A++;
return temp;
}1
2
3
4
5ostream &operator<<(ostream &cout, person5 p) //返回引用
{
cout << p.m_A;
return cout;
}1
2
3
4
5
6
7
8
9
10
11
12person &operator=(person &p)
{
//判断是否有属性在堆区,有则清干净
if (m_Age != NULL)
{
delete m_Age;
m_Age = NULL;
}
//深拷贝
m_Age = new int(*p.m_Age);
return *this;
}1
2
3
4
5bool operator==(person p)
{
if (p.m_Name == m_Name && p.m_Age == m_Age) return true;
else return false;
}1
2
3
4void operator()(string str)
{
cout << str << endl;
}变量名("输出内容");来输出字符串。
仿函数的应用非常灵活,在此无法一一列举。