1.重载左移运算符 不能利用成员函数重载,因为无法实现cout在左侧
ostream & operator<<(ostream &out,Person &p) 对cout起别名out
{
out<<"m_a="<<m_a<<" m_b="<<m_b;
return out;
}
2.重载前置++运算符 返回引用为了多次对一个数据递增
animal& operator++()
{
m_num++;
return *this;
}
3.重载后置++运算符
animal operator(int)
{
animal temp=*this;
m_num++;
return temp;
}
4.重载赋值运算符
Person& operator=(Person &p)
{
if(m_age!=NULL;
{
delete m_age;
m_age=NULL;
}
m_age=new int (*p.m_age); m_age=p.m_age;
编译器提供的代码是浅拷贝
return *this;
}
5.关系运算符重载
bool operator!=(Person &p)
{
if(this->m_name == p.m_name &&this->m_age ==p.m_age)
return false;
else
return true;
}
6.函数调用运算符重载
由于重载后使用方式非常像函数的调用,因此称为仿函数。其没有固定写法,十分灵活。
void operator()(string a)
{
cout<<a<<endl;
}
调用时:
MyPrint myPrint;
myPrint("hello world");
也可以这样匿名函数对象:
MyPrint()("hello world");