给出如下课程:
class Person
{
private:
char *name;
public:
Person()
{
name = new char[20];
}
~Person()
{
delete [] name;
}
}
我想打印以使用如下语句打印此实例的名称:
cout << myPerson << endl;
如何为此类定义<<
输出运算符?
答案 0 :(得分:12)
在课堂上添加:
friend std::ostream& operator<< (std::ostream& out, const Person& P);
然后定义运算符&lt;&lt;像这样的东西:
std::ostream& operator<< (std::ostream& out, const Person& P) {
out << P.name;
return out;
}
答案 1 :(得分:3)
定义一个以ostream为参数的成员函数print()。然后让重载运算符&lt;&lt;叫这个成员函数。这样你就可以避免使用朋友了。例如:
void YourClass::print(ostream& out) const
{
//implement printing ...
}
ostream& operator<<(ostream& out, const YourClass& m)
{
m.print(out);
return out;
}