一:加号运算符重载
遇到的错误:
1.关于private 我把age和num的定义在了private导致main函数中不可访问
2.关于引用:(其实就是一个别名)
应该使用p.age 而不是 p->age
3.关于默认构造函数,当我们自己定义一个构造函数的时候,要再洗一个默认构造函数。这样当我们常见对象是可以不用赋值
二:左移运算符重载
void operator<<(ostream& cout,person& p)
{
cout<<p.age<<endl<<p.num<<endl;
}
上面的这种写法,返回一个空,当cout中有多个 << 时无法继续,需要返回一个ostream&的类型
ostream& operator<<(ostream& cout,person& p)
{
cout<<p.age<<endl<<p.num<<endl;
return cout;
}
1.这里注意cout的ostream类,还需要&
三:递增运算符重载
前缀:
person& operator++() //调用时p1.operator++ 化简就是 ++p1
{
this->age++;
this->num++;
return *this;//返回this的值
}
返回*this是为了可以连续使用后缀
后缀:
person operator++(int)
{
person temp = *this;
age++;num++;
return temp;
}
注意:返回的时一个值,而不是地址 所以只能使用一个++
四:赋值运算符重载
五:关系运算符重载
六:函数调用运算符重载
即()的重载,又叫伪函数,就是给()赋予新的意义