在链接列表类中,我创建了一个display方法来打印链接列表,因为它当前的形式如下:
void LinkedList::display() {
Node* curr = m_head;
while (curr) {
std::cout << curr->n_data << " -> ";
curr = curr->n_next;
}
std::cout << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
一位对作业进行评分的助教留下了评论:
切勿在类文件中执行 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;
}
Run Code Online (Sandbox Code Playgroud)
LinkedList list;
...
list.display(std::cout);
Run Code Online (Sandbox Code Playgroud)
然后,如果您决定重载operator<<,它可以简单地调用display(),例如:
std::ostream& operator<<(std::ostream &out, const LinkedList &list) {
list.display(out);
return out;
}
Run Code Online (Sandbox Code Playgroud)
LinkedList list;
...
std::cout << list;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |