上学期我一直在复习一些旧的硬件作业。这是一个给定的打印函数,用于打印出链表对象。我不明白为什么重载运算符需要两个参数,一个是 os 对象。当我们在 main.cpp 上打印出实际的链表对象时,我们不需要传递 os 对象。另外,为什么要返回os?为什么我们不能只使用 cout 而不是 "os <<" ?
谢谢!
template <class T>
void List<T>::print(ostream & os) const
{
os << "<";
ListNode * curr = head;
while (curr != NULL) {
os << " " << curr->data;
curr = curr->next;
}
os << " >";
}
// overloaded operator<<
template <class T>
ostream & operator<<(ostream & os, const List<T> & list)
{
list.print(os);
return os;
}