function output(source) {
source << "hello" << endl;
}
如果這是一個成員函數,其中的一點是轉儲有關它所屬類別的對象的數據,考慮將其重命名爲operator<<
。所以,與其
class Room {
...
// usage myRoom.output(otp)
void output(std::ostream& stream) {
stream << "[" << m_name << ", " << m_age << "]";
}
};
相反,試試這個:
class Room {
...
// usage opt << myRoom << "\n"
friend std::ostream& operator<<(std::ostream& stream, const Room& room) {
return stream << "[" << room.m_name << ", " << room.m_age << "]";
}
};
這樣的話,你可以使用更自然的語法顯示您的類的狀態:
std::cout << "My Room: " << myRoom << "\n";
代替klunky
std::cout << "My Room: ";
myRoom.output(std::cout);
std::cout << "\n";
其中兩個方面:1)'source' is on od d名稱爲數據*進入*的位置。不使用*來源*來源?2)當你的意思是'\ n''時,千萬不要說'endl'。見['endl'慘敗](http://stackoverflow.com/questions/5492380/what-is-the-c-iostream-endl-fiasco/5492605#5492605)。 –
@Rob:你說得對,'source'可能應該改變。並非常感謝你對'endl'的慘敗。我不知道在**所有**!特別是當我的程序要做很多I/O時!完美評論,+1 – Amit