假设我有一个班级Crate
,它有两个成员width
和height
。现在假设我希望行std::cout << myCrate << '\n';
打印出来:
#---#
| |
| |
#---#
如果myCrate
有width = 5
和height = 4
。不同的width
和height
s应导致不同的包装箱尺寸。我可以定义此行为,例如通过重载<<
运算符?我该怎么做呢?
请注意,这是一个通用示例,并非特定于上面的Crate
类。
答案 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;
}