我有一些这样的代码:
class Point {
public:
int x,y;
Point() : x(1), y(1) {}
}
我可以使用 printf()
打印该类的对象吗:
int main()
{
Point point;
printf("%o",point);
return 0;
}
或者我必须超载 operator<<
并使用 std::cout
:
std::ostream& operator<<(std::ostream& os, Point const& p)
{
os << p.x << "," << p.y;
return os;
}
int main()
{
Point point;
std::cout << point;
return 0;
}
原文由 nathiss 发布,翻译遵循 CC BY-SA 4.0 许可协议
不。
printf
在这个意义上是不可扩展的。您最好的选择是在
std::ostream
和operator<<
Point
。PS 我建议将参数类型更改为
Point const&
。