写这个类还是能学习到很多东西的,比如拷贝构造函数,友元函数,运算符的重载。以及对一些修饰符的理解。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112#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++矩阵类内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复