在链接列表类中,我创建了一个display
打印出链接列表的方法,目前的形式如下:
void LinkedList::display() {
Node* curr = m_head;
while (curr) {
std::cout << curr->n_data << " -> ";
curr = curr->n_next;
}
std::cout << std::endl;
}
一位对作业进行评分的助教留下了评论:
切勿在类文件中执行 cout。使用ostream& operator<<
反而。
类不应该关心输出到哪里(文件/控制台/等)。
在这次作业时我们还没有了解运算符重载,但我仍然不太确定。
我将如何实际实施和使用ostream& operator>>
打印到控制台?为什么这是最佳实践?
在这种情况下,最简单的解决方案是添加一个std::ostream
参数给你的display()
方法,例如:
void LinkedList::display(std::ostream &out) const {
Node* curr = m_head;
while (curr) {
out << curr->n_data << " -> ";
curr = curr->n_next;
}
out << std::endl;
}
LinkedList list;
...
list.display(std::cout);
然后,如果接下来,你决定超载operator<<
,它可以简单地调用display()
, eg:
std::ostream& operator<<(std::ostream &out, const LinkedList &list) {
list.display(out);
return out;
}
LinkedList list;
...
std::cout << list;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)