assignment5 treebook
Part 1: Viewing Profiles
分析
就一个要求,编写一个将 User 打印到 std::ostream operator<< 方法,即重载运算符<<(此运算符应在 user.h 中声明为友元函数)
要求的效果
User(name=Alice, friends=[Bob, Charlie])
实现
首先在user.h中声明
friend std::ostream& operator<<(std::ostream& os, User& user);
在user.cpp中实现
std::ostream& operator<<(std::ostream& os, User& user){os<<"User(name="<<user.get_name()<<", friends=[";std::string* friends = user._friends;size_t size = user.size();for(size_t i = 0; i < size; ++i){if(i+1 < size){os<<friends[i]<<", ";}else{os<<friends[i];}
}os<<"])";return os;
}
一些细节
为什么是引用 (&) 而不是值?
禁止拷贝:std::ostream 是禁止复制的(拷贝构造函数被删除)。
效率:返回引用避免不必要的拷贝开销。
修改原始流:需直接操作原始流对象(如 std::cout),而非其副本。
