我可以使用 printf() 打印类的对象吗?
Can I print an object of the class using 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;
}
我可以使用
printf()
打印该类的对象吗?
不。 从这个意义上说,printf
是不可扩展的。
您最好的选择是在 std::ostream
和 Point
之间重载operator<<
.
PS我建议将参数类型更改为Point const&
。
但是
,您可以在类中使用自定义print
函数,该函数将按照您想要的方式打印对象:
...
void print() const {
printf("[%d, %d]", x, y);
}
...
int main()
{
Point point;
point.print();
return 0;
}
如果需要,您还可以使用fprintf
和自定义流。这并不完全是对您的问题的答案,但在所描述的情况下似乎很有用。
你必须
重载运算符,否则printf()
会混淆point
打印对象的内容,因为类有两个成员。
相关文章:
- 如何仅使用对象名称打印特定于对象的成员
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数
- 打印抽象对象 c++
- 为什么平均打印数组元素比打印单个对象慢C++?
- 打印指向的对象
- 如何在 c++ 中打印存档中的对象向量
- 如何获取列表的每个对象并调用getName方法来打印其名称
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 将对象放入地图后打印对象
- 打印对象的映射,其中另一个对象作为键
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 如何在C++中打印对象向量的内容
- 打印出对象向量中的每个元素C++
- 对象数组打印空白字符串
- C++ - 打印派生类对象的矢量<base*> 元素
- C++ - 使用 std::list,如何打印对象的私有成员的链接列表?
- 未正确的校验和释放对象 - 打印时错误
- GDB:如何从子对象打印/调用父函数
- 从对象打印二维矢量时出错
- 从对象打印2D int向量