我想控制写入流的内容,即cout
针对自定义类的对象。在C ++中有可能吗?在Java中,您可以toString()
出于类似目的重写该方法。
在C ++中,您可以重载operator<<
forostream
和您的自定义类:
class A {
public:
int i;
};
std::ostream& operator<<(std::ostream &strm, const A &a) {
return strm << "A(" << a.i << ")";
}
这样,您可以在流上输出类的实例:
A x = ...;
std::cout << x << std::endl;
如果您operator<<
希望打印出类的内部结构A
并且确实需要访问其私有成员和受保护成员,则还可以将其声明为朋友函数:
class A {
private:
friend std::ostream& operator<<(std::ostream&, const A&);
int j;
};
std::ostream& operator<<(std::ostream &strm, const A &a) {
return strm << "A(" << a.j << ")";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句