重载'<<<所以它可以用于多个对象

时间:2011-05-08 19:17:10

标签: c++

我开始掌握操作员超载,但我已经碰壁了。我无法弄清楚如何制作'<<<以重新定义的方式工作,以便使用我班级中的多种类型的对象。我必须使用我的一个类构造函数来初始化两个单独的矩阵,所以我需要创建两个不同的对象,如: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;
}

1 个答案:

答案 0 :(得分:2)

这将适用于多个对象,因为<<重载会返回对流的引用。 <<从左到右被评估为 1 ,所以如果你这样做:

stream << a << b << c;

相当于:

((stream << a) << b) << c;

现在,由于您的(stream << a)函数返回ostream&,我们可以将其视为:

((stream) << b) << c;

依此类推:))

1:从技术上讲,它从左到右“关联”,导致从左到右的评估。