我让我的班级有机会使用 << 运算符写入 ostream。
friend static std::ostream& operator<<(std::ostream& stream, const my_type& arg)
但原则上,将来你可能需要在iostream中记录。是的,对于其他子线程来说,basic_ostream<char, char_traits<char>>
立即定义运算符是否有意义:
friend static std::ostream& operator<<(std::basic_ostream<char, char_traits<char>>& stream, const my_type& arg)
?
或者这是不礼貌的行为,他们出于某种原因不这样做?
正如正确指出的,
std::ostream
它是一个同义词std::basic_ostream<char>
。您可以对其进行设置
<<
,以便它接受任何内容basic_ostream<...>
,例如打印到“宽”流(带有wchar_t
字符)中。这有多大用处是另一个问题。一个更有趣的思考主题是,如果 -s 存在(或 libfmt)
ostream
,那么在 202X 中是否需要它。std::format
也许学习写-s会更好std::formatter
。简而言之,不需要这些额外的身体动作。既然
ostream
是同义词basic_ostream<char,char_traits<char>>
。在任何上下文中,包括继承,它的行为方式都是相同的。感谢@Harry 在评论中的澄清。