重载'<<',以便可用于多个对象

Overloading '<<' so it is usable with more than one object

本文关键字:lt 对象 用于 重载      更新时间:2023-10-16

我开始掌握运算符重载,但我遇到了障碍。我不知道如何使"<<"以重新定义的方式工作,以处理我的类中的多种类型的对象。我必须使用我的一个类构造函数来初始化两个单独的矩阵,所以我需要制作两个不同的对象,如下所示:矩阵 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:从技术上讲,它从左到右"关联",导致从左到右的评估。