我必须重载一个运算符,就像这样。
max(matrix)=11;
所以,有一个函数max,它返回该矩阵中的最大数字。并且此行必须将最大值设置为11.问题是:如何声明此运算符重载?
答案 0 :(得分:5)
这里没有涉及运算符重载,除了max(matrix)
应该返回一些已经超载operator=(int)
的用户定义类型,这是不必要的。
你在技术上可以做的是如你所描述的那样使代码行工作一些(矩阵的最大元素的非对象)引用:
int& max(Matrix& mx) { /* ... */ }
此处不需要操作员重载。然后该行将该最大值的元素设置为11.但是,在它之后,最大值可能不会设置为11.考虑这个矩阵:
/ 5 32 10 \
| 11 3 64 |
\ 10 2 0 /
显然最大值是64,但在你的行之后,最大值将是第一行中的32。
但是,使用max
函数执行我所描述的功能并不是一个好主意,因为它不能完成人们通常期望的功能。可能是一个简单的重命名使它更清晰:标准库使用max_element
来表示类似的函数,而max
只返回一个集合的最大值,不允许改变它。
PS:确保给定矩阵的最大值为11的函数,你提供的语法是可能的,但更不直观,所以我不会通过提供一个不好的例子诱惑你; - )