编一个程序,用成员函数重载运算符“+”和“-”,将两个矩阵(这两个矩阵均为2行3列)相加和相减。
要求:类名是Maxtrix,私有变量为int maxtrix[2][3]
1.一个构造函数,矩阵元素分别从1开始递增
2.一个输入函数setMatrix(),用于输入矩阵中的元素值
3.一个输出函数outputMatrix(),输出矩阵,按行输出,并且每个元素宽度为5
4.一个“+”重载的成员函数函数,用于实现两个矩阵的相加
5.一个“-”重载的友元函数,用于实现两个矩阵的相减 展开
此题考察的知识点是:类的成员函数。代码如下:
#include <iostream>
using namespace std;
class Matrix //定义Matrix类
{public:
Matrix(); //默认构造函数
friend Matrix operator+(Matrix &,Matrix &); //重载运算符“+”
void input(); //输入数据函数
void display(); //输出数据函数
private:
int mat[2][3];
};
扩展资料
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。
当调用一个重载函数或重载运算符时,编译器纯瞎芦通过把所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函神御数或重载运算符的过程,称为重载决策。
在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。
参考资料来源:
代码如下:
#include<iostream>
#include<iomanip>
using namespace std;
class Maxtrix
{
private:
int maxtrix[2][3];
public:
Maxtrix()
{
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
maxtrix[i][j]=3*(i)+j+1;
}
}
}
void SetMaxtrix()
{
cout<<"输入2维数组,数字间以空格隔开"<<endl;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
cin>>maxtrix[i][j];
}
}
}
void OutputMaxtrix()
{
cout<<"矩阵输出:"<<endl;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
cout<<setw(5)<汪旅<maxtrix[i][j];
}
cout<<endl
}
}
Maxtrix operator+(const Maxtrix& max)const
{
Maxtrix m;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
m.maxtrix[i][j]=this->maxtrix[i][j]+max.maxtrix[i][j];
}
}
return m;
}
friend Maxtrix operator-(const Maxtrix& op1,const Maxtrix& op2);
};
Maxtrix operator-(const Maxtrix& op1,const Maxtrix& op2)
{
Maxtrix m;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
m.maxtrix[i][j]=op1.maxtrix[i][j]-op2.maxtrix[i][j];
}
}
return m;
}
void main()
{
Maxtrix m;
Maxtrix op1,op2;
op2.SetMaxtrix();
m.OutputMaxtrix();
op1.OutputMaxtrix();
op2.OutputMaxtrix();
m=op1+op2;
m.OutputMaxtrix();
op1.OutputMaxtrix();
op2.OutputMaxtrix();
m=op1-op2;
m.OutputMaxtrix();
op1.OutputMaxtrix();
op2.OutputMaxtrix();
}
扩展资料:
注意事项
C++允许在同一个作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但他们的参数列表和定义(实现)不相同。当调用一个重载函数或重载运算符时,编译器通过把函数所使用的参数类型和定义中的参数类型进行比较,决定选用最合适的定义。
在同一个作用域内,可以声明几个坦陵陪功能类似的同名函数,但是这些同名函数的形式参数(参数个数,类型或者顺序)必须不同,不能仅通过返回类型的不同来重载函数。
/***
overload.cpp
***/
#include<iostream>
using namespace std;
class printData
{
public:
void print(int i)
{
cout << "integer is : " << i << endl;
}
void print(double f)
{
cout << "flota is : " << f << endl;
}
void print(char c[])
{
cout << "char is : " << c << endl;
}
};
int main()
{
printData pd;
pd.print(5);
pd.print(300.1);
char c[] = "hello C++";
让蠢 pd.print(c);
return 0;
}
运行结果:
exbot@ubuntu:~/wangqinghe/C++/20190807$ vim overload.cpp
exbot@ubuntu:~/wangqinghe/C++/20190807$ g++ overload.cpp -o overload
exbot@ubuntu:~/wangqinghe/C++/20190807$ ./overload
integer is : 5
flota is : 300.1
char is : hello C++
#include<iomanip>
using namespace std;
class Maxtrix
{
private:
int maxtrix[2][3];
public:
Maxtrix()
{
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
maxtrix[i][j]=3*(i)+j+1;
}
}
}
void SetMaxtrix()
{
cout<<"输入2维数组,数字间以空格隔开"<<endl;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
cin>>maxtrix[i][j];
}
}
}
void OutputMaxtrix()
{
cout<<"矩阵输出:"<<endl;
for(int i=0;i<2;i++)
{
for(int j=0;j<灶凯冲3;j++)
{
cout<<setw(5)<<maxtrix[i][j];
}
cout<<endl;
}
}
Maxtrix operator+(const Maxtrix& max)const
{
Maxtrix m;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
m.maxtrix[i][j]=this->maxtrix[i][j]+max.maxtrix[i][j];
}
}
return m;
}
friend Maxtrix operator-(const Maxtrix& op1,const Maxtrix& op2);
};
Maxtrix operator-(const Maxtrix& op1,const Maxtrix& op2)
{
Maxtrix m;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
m.maxtrix[i][j]=op1.maxtrix[i][j]-op2.maxtrix[i][j];
}
}
return m;
}
void main()
{
Maxtrix m;
Maxtrix op1,op2;
op2.SetMaxtrix();
m.OutputMaxtrix();
op1.OutputMaxtrix();
op2.OutputMaxtrix();
m=op1+op2;
m.OutputMaxtrix();
op1.OutputMaxtrix();
op2.OutputMaxtrix();
m=op1-op2;
m.OutputMaxtrix();
op1.OutputMaxtrix();
op2.OutputMaxtrix();
}