c++ - 类中c ++的运算符+重载
问题描述
这是为我的教师分配的,我想为operator +
矩阵做重载我创建新矩阵并将总和放入这个矩阵并打印它,但它什么也没打印,所以任何人都可以帮我解决这个问题吗?
class matrix
{
private:
int* data;
int row, col;
public:
matrix();
matrix(int r, int c, int num[]);
friend ostream& operator << (ostream& out, matrix mat1);
friend istream& operator >> (istream& in, matrix& mat);
int getrow();
int getcol();
int getdata(int i);
int setrow(int r);
int setcol(int c);
int setdata(int num[]);
matrix operator+ (const matrix& mat2);
};
现在我写了这段代码,它什么也没打印,谁能帮我解决这个问题?首先,我为数据制作 setter 和 getter。
matrix::matrix(){
row=0;
col=0;
}
matrix::matrix(int r, int c, int num[])
{
row = r;
col = c;
data = new int[r*c];
for(int i=0; i < (r*c); i++)
data[i] = num[i];
}
matrix::getrow() { return row; }
matrix::getcol() { return col; }
matrix::setrow(int r) { row=r; }
matrix::setcol(int c) { col=c; }
matrix matrix::operator+ (const matrix& mat2)
{
matrix mat3;
for(int i=0; i < mat3.getrow() * mat3.getcol(); i++) {
mat3.data[i] = data[i] + mat2.data[i];
}
return mat3;
}
int main(){
int num2 [] = {1,2,3,4,5,6,7,8,8};
int num3 [] = {1,0,0,0,1,0,0,0,1};
matrix x;
matrix mat2(3, 3, num2);
matrix mat3(3, 3, num3);
matrix mat4;
mat4 = mat2 + mat3;
cou << mat4;
return 0;
}
解决方案
这里有一些建议
1.初始化错误
尝试添加这样的构造函数重载方法:
matrix::matrix(int r, int c)
{
row = r;
col = c;
data = new int[r*c];
for (int i = 0; i < r*c; i++) {
data[i] = 0;
}
}
然后在operator+
重载函数中,使用此方法启动 mat3:
matrix mat3(mat2.getrow(), mat2.getcol());
2.overload=
运算符是必不可少的,因为您决定mat4 =
matrix matrix::operator= (const matrix& from_mat)
{
matrix to_mat(from_mat.getrow(), from_mat.getcol());
for (int i = 0; i < from_mat.getrow() * from_mat.getcol(); i++) {
to_mat.data[i] = from_mat.data[i];
}
return to_mat;
}
3.在main
功能上,只需使用matrix mat4 = mat2 + mat3;
推荐阅读
- r - osmda 包没有找到任何对象
- typescript - 如何确定字符串是否是枚举的一部分?
- r - na.fail.default(list(Fe = c(568L, 437L, 599L, 1016L, 670L, 1951L, : 对象中的缺失值
- .net - Traefik 不会路由路径
- javascript - 从网络服务器摄像头录制
- next.js - 使用 index.js 以外的东西作为 next.js 目录中的主页
- android - 环绕图标的按钮?
- python - 如何修复 Pygame 无法打开文件“Gunshot.ogg”错误
- python - 使用opencv调整视频大小并保存
- kubernetes - kubernetes v1.18.8 安装问题