重载'<<',以便可用于多个对象
Overloading '<<' so it is usable with more than one object
我开始掌握运算符重载,但我遇到了障碍。我不知道如何使"<<"以重新定义的方式工作,以处理我的类中的多种类型的对象。我必须使用我的一个类构造函数来初始化两个单独的矩阵,所以我需要制作两个不同的对象,如下所示:矩阵 a(sizeIn, rangeIn), b(sizeIn, rangeIn);但正如您在下面看到的,我的"<<"重载函数仅使用一个类参数。谁能帮我?
ostream & operator << (ostream & os, const matrix & a)
{
for (int i = 0; i < a.size; i++)
{
cout << '|';
for (int j = 0; j < a.size; j++)
{
os << setw(4) << a.array[i][j] << " ";
}
os << setw(2) << '|' << endl;
}
return os;
}
这将适用于多个对象,因为<<
重载返回对流的引用。 <<
从左到右计算1,因此,如果您这样做:
stream << a << b << c;
它相当于:
((stream << a) << b) << c;
现在,由于您的(stream << a)
函数返回一个ostream&
,我们可以将其视为:
((stream) << b) << c;
等等:)
1:从技术上讲,它从左到右"关联",导致从左到右的评估。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 如何在自删除后将对象设置为nullptr
- C++是否可以将fstream对象设置为在每次调用<<
- 如何显示/打印字符串对象?cout & lt; & lt;Int工作,count <<字符串