实验3 类和对象
实验任务4
"vector_int.hpp"
#ifndef VECTOR_INT_H #define VECTOR_INT_H #include<iostream> #include<cassert> using namespace std; class vector_int{ public: vector_int(int n,int m=0):size(n),value(m){ cout<<"constructor is called."<<endl; p=new int[n]; for(auto i=0;i<size;i++) p[i]=value; } vector_int(const vector_int &x):size(x.size){ p= new int[size]; for(auto i=0;i<size;i++) p[i]=x.p[i]; } int &at(int i){ assert(i>=0 && i<size); return p[i]; } ~vector_int(){ cout<<"deleting..."<<endl; delete []p; } void show(){ for(auto i=0;i<size;i++) cout<<p[i]<<", "; cout<<"\b\b \n"; } private: int size,value; int *p; }; #endif
task4.cpp
#include"vector_int.hpp" #include<iostream> int main(){ using namespace std; int n; cin>>n; vector_int x(n,13); x.show(); vector_int y(x); y.show(); y.at(0)=601; y.show(); }
运行结果:

实验任务5
"Matrix.hpp"
#ifndef MATRIX_H #define MATRIX_H #include<iostream> using namespace std; class Matrix{ public: Matrix(int n):lines(n),cols(n){ p=new double[n*n]; } Matrix(int n,int m):lines(n),cols(m){ p=new double[n*m]; } Matrix(const Matrix &x):lines(x.lines),cols(x.cols){ p=new double[lines*cols]; for(auto i=0;i<lines*cols;i++) p[i]=x.p[i]; } ~Matrix(){ delete []p; } void set(const double *pvalue){ for(auto i=0;i<lines*cols;i++) p[i]=pvalue[i]; } void set(int i,int j,int value){ int k; k=i*cols+j; p[k]=value; } double &at(int i,int j){ int k; k=i*cols+j; return p[k]; }; double at(int i,int j) const{ int k; k=i*cols+j; return p[k]; }; int get_lines() const{return lines;} int get_cols() const{return cols;} void print() const{ for(auto i=0,j=0;i<lines*cols;i++,j++){ cout<<p[i]<<", "; if((j+1)%cols==0) cout<<"\b\b \n"; } }; private: int lines; int cols; double *p; }; #endif
task5.cpp
#include "Matrix.hpp" #include <iostream> int main(){ using namespace std; double x[]={1,2,3,4,5,6,7,8,9,10}; Matrix m1(2,5); m1.set(x); m1.print(); cout<<"the first line is: "<<endl; for(int i=0;i<5;i++) cout<<m1.at(0,i)<<" "; cout<<endl; cout<<endl; Matrix m2(5,2); m2.set(x); m2.print(); cout<<"the first line is: "<<endl; cout<<m2.at(0,0)<<" "<<m2.at(0,1)<<endl; cout<<endl; Matrix m3(m2); m3.set(4,1,13); m3.print(); }
运行结果:

浙公网安备 33010602011771号