一个输出运算符与递增运算符重载的问题
#include <iostream>
#include <string>
using namespace std;
class Person
{
private:
string name;
int age;
public:
Person(string str, int age)
{
this->name = str;
this->age = age;
}
Person &operator++()
{
this->age++;
return *this;
}
Person operator++(int)
{
Person temp = *this;
this->age++;
return temp;
}
friend ostream &operator<<(ostream &cout, Person &person);
};
ostream &operator<<(ostream &cout, Person &person)
{
cout << "name: " << person.name << " age: " << person.age;
return cout;
}
int main()
{
Person p1 = {"zhang", 14};
Person p2 = {"wang", 23};
cout << ++p1 << endl;
cout << p1 << endl;
cout << "-----------" << endl;
cout << p2++ << endl; //报错,没有匹配操作符
cout << p2 << endl;
cin.get();
return 0;
}
为什么cout<<p2++<<endl;的时候报错,提示没有匹配操作符 std::ostream << Person
问题是我已经重载了<<,cout<<++p1<<endl;就不会报错