标签:val 阵列 析构函数 地址 new code make 组元 value
#ifndef MATRIX_H #define MATRIX_H class Matrix { public: Matrix(int n); // 构造函数,构造一个n*n的矩阵 Matrix(int n, int m); // 构造函数,构造一个n*m的矩阵 Matrix(const Matrix &X); // 复制构造函数,使用已有的矩阵X构造 ~Matrix(); //析构函数 void setMatrix(const float *pvalue); // 矩阵赋初值,用pvalue指向的内存块数据为矩阵赋值 void printMatrix() const; // 显示矩阵 inline float &element(const int i, int j); //返回矩阵第i行第j列元素的值 inline float element(int i, int j) const;// 返回矩阵第i行第j列元素的值 void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value inline int getLines() const; //返回矩阵行数 inline int getCols() const;//返回矩阵列数 private: int lines; // 矩阵行数 int cols; // 矩阵列数 float *p; // 指向存放矩阵数据的内存块的首地址 }; #endif
#include <iostream> #include "matrix.h" using namespace std; int i,j; Matrix::Matrix(int n):lines(n),cols(n) { p=new float[lines*cols]; } Matrix::Matrix(int n,int m):lines(n),cols(m) { p=new float[lines*cols]; } Matrix::Matrix(const Matrix &x):lines(x.lines),cols(x.cols) { p=new float[lines*cols]; for(i=0;i<lines*cols;i++) p[i]=x.p[i]; } Matrix::~Matrix() { delete[] p; } void Matrix::setMatrix(const float *pvalue) { for(i=0;i<lines*cols;i++) p[i]=pvalue[i]; } void Matrix::printMatrix() const { for(i=0;i<lines;i++) { for(j=0;j<cols;j++) cout<<p[i*lines+j]<<" "; cout<<endl; } } inline float Matrix::element(int i,int j) const { cout<<p[(i-1)*lines+j-1]<<endl; } void Matrix::setElement(int i, int j, int value) { p[(i-1)*lines+j-1]=value; } inline int Matrix::getLines() const { return lines; } inline int Matrix::getCols() const { return cols; }
#include <iostream> #include "matrix.h" using namespace std; int i,j; Matrix::Matrix(int n):lines(n),cols(n) { p=new float[lines*cols]; } Matrix::Matrix(int n,int m):lines(n),cols(m) { p=new float[lines*cols]; } Matrix::Matrix(const Matrix &x):lines(x.lines),cols(x.cols) { p=new float[lines*cols]; for(i=0;i<lines*cols;i++) p[i]=x.p[i]; } Matrix::~Matrix() { delete[] p; } void Matrix::setMatrix(const float *pvalue) { for(i=0;i<lines*cols;i++) p[i]=pvalue[i]; } void Matrix::printMatrix() const { for(i=0;i<lines;i++) { for(j=0;j<cols;j++) cout<<p[i*lines+j]<<" "; cout<<endl; } } inline float Matrix::element(int i,int j) const { cout<<p[(i-1)*lines+j-1]<<endl; } void Matrix::setElement(int i, int j, int value) { p[(i-1)*lines+j-1]=value; } inline int Matrix::getLines() const { return lines; } inline int Matrix::getCols() const { return cols; }
#include <iostream> #include "matrix.h" using namespace std; int main() { int n; cout<<"输入行数:"<<endl; cin>>n; Matrix A(n); float a[n*n]; cout<<"输入矩阵A:"<<endl; for(int i=0;i<n*n;i++) cin>>a[i]; A.setMatrix(a); A.printMatrix(); int m; cout<<"输入行列:"<<endl; cin>>n>>m; Matrix B(n,m); float b[n*m]; cout<<"输入矩阵B:"<<endl; for(int i=0;i<n*m;i++) cin>>b[i]; B.setMatrix(b); B.printMatrix(); cout<<"返回a矩阵第2行第2列"<<endl; cout<<A.element(2,2)<<endl; cout<<"改变第1行第2列值"<<endl; A.setElement(2,2,3); cout<<"返回a矩阵第2行第2列"<<endl; cout<<A.element(2,2)<<endl; cout<<"返回a矩阵的行数:"<<endl; cout<<A.getLines()<<endl; cout<<"返回a矩阵的列数:"<<endl; cout<<A.getCols()<<endl; return 0; }
这个是上一次得矩阵类的问题,但自己当时对深复制,浅复制还未看懂所以未能及时完成,此外在结合指针输出数组元素我用的还不是太熟练 ,此外,在多文件编写 和const上可能还有一点问题,以致我经常会出现截图一的错误会弹出一个makefile.win。想问下出现这种情况怎么办
标签:val 阵列 析构函数 地址 new code make 组元 value
原文地址:https://www.cnblogs.com/zzy4546/p/9103236.html