运算符重载%的实例
时间: 2023-08-21 20:07:43 浏览: 82
下面是一个实现矩阵取模运算的示例,其中运算符%被重载为成员函数形式:
```c++
#include <iostream>
#include <vector>
class Matrix {
public:
Matrix(int n, int m) : n_(n), m_(m), data_(n * m) {}
// 运算符%的成员函数形式重载
Matrix operator%(const Matrix& other) const {
Matrix result(n_, m_);
for (int i = 0; i < n_; ++i) {
for (int j = 0; j < m_; ++j) {
result(i, j) = data_[i * m_ + j] % other(i, j);
}
}
return result;
}
int& operator()(int i, int j) {
return data_[i * m_ + j];
}
const int& operator()(int i, int j) const {
return data_[i * m_ + j];
}
private:
int n_;
int m_;
std::vector<int> data_;
};
int main() {
Matrix A(3, 3);
A(0, 0) = 1; A(0, 1) = 2; A(0, 2) = 3;
A(1, 0) = 4; A(1, 1) = 5; A(1, 2) = 6;
A(2, 0) = 7; A(2, 1) = 8; A(2, 2) = 9;
Matrix B(3, 3);
B(0, 0) = 2; B(0, 1) = 2; B(0, 2) = 2;
B(1, 0) = 3; B(1, 1) = 3; B(1, 2) = 3;
B(2, 0) = 4; B(2, 1) = 4; B(2, 2) = 4;
Matrix C = A % B;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
std::cout << C(i, j) << " ";
}
std::cout << std::endl;
}
return 0;
}
```
在上面的示例中,运算符%被重载为成员函数形式,可以对两个 Matrix 类型的对象进行取模运算。在 main 函数中,我们创建了两个矩阵 A 和 B,并对它们进行了取模运算,将结果保存在矩阵 C 中。最后,我们输出了矩阵 C 中的元素,验证了运算符%的重载实现。