我在使用以下代码时遇到了困难。请看一下,并解释我无法理解的内容。如果不合适,请提出问题的标题。谢谢。
class matrix
{
private:
int m,n;
int mat[10][10];
public:
void read_matrix();
void show_matrix();
matrix operator + (matrix mt);
};
matrix matrix::operator + (matrix mt)
{
matrix msum;
for(int i=0; i<m;++i)
{
for(int j=0;j<n;++j)
{
msum.mat[i][j]=mat[i][j]+mt.mat[i][j];
}
}
return msum;
}
void matrix::show_matrix()
{
for(int i=0;i<m;++i)
{
for(int j=0;j<n;++j)
{
cout<<setw(8)<<mat[i][j]<<endl;
}
}
}
matrix matrix::operator + (matrix mt)
mat[i][j]
的价值是什么: msum.mat[i][j]=mat[i][j]+mt.mat[i][j];
答案 0 :(得分:0)
::
是范围运算符。如果我们在class之外定义方法的定义,我们使用this运算符来定义这个方法属于这个类。在这一行:matrix matrix::operator + (matrix mt)
第一个矩阵是返回类型,第二个是它所属的类的名称, +
符号表示,我们正在重载加运算符以执行一些自定义加操作。我们无法直接添加矩阵。但是用户只需在它们之间添加+就可以尝试添加两个矩阵。所以这里我们重载+运算符,所以每当用户在矩阵类对象之间添加+时,它就会添加矩阵(即二维数组)
mat[i][j]
的值将在运行时从您作为输入提供的内容中选取。这是二维数组。
答案 1 :(得分:0)
第一个问题:你正在超载+运营商。 c ++中的许多运算符都可以重载。如果你写
int i = 4 + 5;
c ++确实知道+运算符的意思,但是当你写
时Matrix mat1 = mat2 + mat3;
c ++不知道它,因为+默认情况下不处理Matrix类,因为它不是预定义类型。
在Matrix类中,您可以指定+运算符必须对该类执行的操作,因此您可以使用+运算符而不是
Matrix mat1 = mat2.sum(mat3);
第二个问题:i和j是矩阵指数。您可以使用循环来为此变量分配临时值。您可以将其读作“对于从0到m的每个i值,对于从0到n的每个j值,总和值”。在这种情况下,您可以对Matrix的每个元素求和。
第三个问题:通常就是这样。为了定义一个类,你将类声明放在.h文件中,将定义放在.cpp文件中,但有一些例外,比如内联方法。使用这种方法,用户可以包含.h文件并在不知情的情况下使用类接口,并且不对其进行任何修改。