我可以使用 printf() 打印类的对象吗?

新手上路,请多包涵

我有一些这样的代码:

 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 许可协议

阅读 1.7k
1 个回答

我可以使用 printf() 打印该类的对象吗?

不。 printf 在这个意义上是不可扩展的。

您最好的选择是在 std::ostreamoperator<< Point

PS 我建议将参数类型更改为 Point const&

原文由 R Sahu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题