【发布时间】:2020-11-04 17:49:20
【问题描述】:
我正在用 C++ 做一些练习题。我遇到了一个问题,我想找到 2d 数组 的元素总和。我可以编写一个返回总和的 get sum 方法。但我正在探索是否可以重载“operator<<”方法以达到相同的结果。
#include <iostream>
using namespace std;
int operator<<(const int arr[5][5])
{
int sum = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
sum += arr[i][j];
}
}
return sum;
}
int main()
{
int arr[5][5] = { {1,2,3,4,5},
{2,3,4,5,6},
{3,4,5,6,7},
{4,5,6,7,8},
{5,6,7,8,9} };
cout << &arr << endl;
}
我想像std::cout 方法一样获得总和。这可能吗?
【问题讨论】:
-
我用这个词来形容你是“颠覆预期”。这是一件坏事。
operator<<()预计会做两件事。你所提议的不是其中之一。这使您的代码更难理解。很多人对运算符的第二个含义还是很咸的,已经过了几十年了。 -
当然你可以滥用“输出运算符”来打印总和。但这真的是您想要在这里实现的目标吗?
-
@sweenish 指的是Principle of least astonishment。
标签: c++ arrays algorithm multidimensional-array operator-overloading