我开始掌握操作员超载,但我已经碰壁了。我无法弄清楚如何制作'<<<以重新定义的方式工作,以便使用我班级中的多种类型的对象。我必须使用我的一个类构造函数来初始化两个单独的矩阵,所以我需要创建两个不同的对象,如:matrix 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;
}
答案 0 :(得分:2)
这将适用于多个对象,因为<<
重载会返回对流的引用。 <<
从左到右被评估为 1 ,所以如果你这样做:
stream << a << b << c;
相当于:
((stream << a) << b) << c;
现在,由于您的(stream << a)
函数返回ostream&
,我们可以将其视为:
((stream) << b) << c;
依此类推:))
1:从技术上讲,它从左到右“关联”,导致从左到右的评估。