用户定义的类是否可以使用std :: cout&lt; <! - ?的自定义行为?

时间:2016-10-01 20:11:01

标签: c++ class cout

假设我有一个班级Crate,它有两个成员widthheight。现在假设我希望行std::cout << myCrate << '\n';打印出来:

#---#
|   |
|   |
#---#

如果myCratewidth = 5height = 4。不同的widthheight s应导致不同的包装箱尺寸。我可以定义此行为,例如通过重载<<运算符?我该怎么做呢?

请注意,这是一个通用示例,并非特定于上面的Crate类。

1 个答案:

答案 0 :(得分:2)

是的,你可以通过重载operator<<来实现,如下所示。通过将该函数声明为Crate的friend,它可以访问所有私有数据成员,允许您表示您认为合适的数据。

Crate.hpp

class Crate {
   ...
   friend std::ostream& operator<< ( std::ostream& os, const Crate& c );
   ...
}

Crate.cpp

std::ostream& operator<< ( std::ostream& os, const Crate& c ) {
   os << "whatever you want to print"

   return os;
}