概述
写这个类还是能学习到很多东西的,比如拷贝构造函数,友元函数,运算符的重载。以及对一些修饰符的理解。
#include <iostream>
#define INFINITE 999999;
#define INIT 100;
using namespace std;
class Matrix{
public:
Matrix(int m=1,int n=1){
cout<<"ctr"<<endl;
this->m=m;
this->n=n;
data=new double[m*n];
for(int i=0;i<m*n;i++)
{
data[i]=0.0;
}}
Matrix(const Matrix& matrix){
cout<<"拷贝构造函数"<<endl;
this->m=matrix.Get_m();
this->n=matrix.Get_n();
data=new double[matrix.Get_m()*matrix.Get_n()];
for(int i=0;i<m*n;i++){
data[i]=matrix.Get_i(i);
}
}
~Matrix(){
cout<<"hello"<<endl;
delete[] data;
}
double Get_i(int i) const{
return data[i];
}
int Get_n() const{
return n;
}
int Get_m() const{
return m;
}
double& operator() ( int i, int j);
Matrix operator+(Matrix matrix){
if(matrix.Get_n()!=n||matrix.Get_m()!=m){
cout<<"两个矩阵大小不一致"<<endl;
return NULL;
}
Matrix matrix_this=*this;
Matrix temp(matrix.Get_m(),matrix.Get_n());
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
temp(i,j)=matrix_this(i,j)+matrix(i,j);
}
}
return temp;
}
Matrix operator+(double x)
{
Matrix temp(m,n);
Matrix matrix_this=*this;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
temp(i,j)=matrix_this(i,j)+x;
}
}
return temp;
}
friend Matrix operator+(double x, Matrix matrix1);
void print(){
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cout<<data[(i)*n+j]<<" ";
}
cout<<endl;
}}
private:
double *data;
int m=1;
int n=1;
};
double& Matrix::operator()( int i,
int j)//取数操作
{
if(i>m||j>n)
{
cout<<"超出索引范围"<<endl;
return data[m*n];
}
if(i<1||j<1)
{
cout<<"超出索引范围"<<endl;
return data[m*n];
}
return data[(i-1)*n+j-1];
}
Matrix operator+(double x, Matrix matrix1){
Matrix temp(matrix1.Get_m(),matrix1.Get_n());
for(int i=1;i<=matrix1.Get_m();i++)
{
for(int j=1;j<=matrix1.Get_n();j++){
temp(i,j)=matrix1(i,j)+x;
}
}
return temp;
}
int main(void)
{
Matrix matrix1(5,5);
Matrix matrix2(5,5);
matrix1=5+matrix1;
matrix2=matrix2+1;
(matrix1+matrix2).print();
}
最后
以上就是现代面包为你收集整理的C++矩阵类的实现(只有加法)的全部内容,希望文章能够帮你解决C++矩阵类的实现(只有加法)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复