gpt4 book ai didi

c++ - 重载 '<<' 使其可用于多个对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:38 25 4
gpt4 key购买 nike

我开始了解运算符重载,但遇到了瓶颈。我无法弄清楚如何使“<<”按照重新定义的方式工作,以处理我类(class)中的一种以上类型的对象。我必须使用我的类构造函数之一来初始化两个单独的矩阵,因此我需要像这样制作两个不同的对象:矩阵 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:从技术上讲,它从左到右“关联”,导致从左到右求值。

关于c++ - 重载 '<<' 使其可用于多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5929688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com