实验3 类与对象Ⅱ

  • 实验任务4

 

source code in Vector_int.hpp :

 1 #include <iostream>
 2 using namespace std;
 3 class Vector_int{
 4     public:
 5         Vector_int(int n);
 6         Vector_int(int n,int v);
 7         Vector_int(const Vector_int &x);
 8         ~Vector_int(){
 9             delete[] p;
10             cout<<"Delete.."<<endl;
11         };
12         int &at(int index);
13     private:
14         int size;
15         int value;
16         int index;
17         int *p;
18 };
19 Vector_int::Vector_int(int n):size(n){
20     p=new int[n];
21     for(int i=0;i<size;i++)
22         p[i]=0;
23     cout<<"Construct with one argue..."<<endl;
24 }
25 Vector_int::Vector_int(int n,int v):size(n),value(v){
26     p=new int[n];
27     for(int i=0;i<size;i++)
28         p[i]=value;
29     
30     cout<<"Construct with two argue..."<<endl;
31 }
32 Vector_int::Vector_int(const Vector_int &x):size(x.size){
33     p=new int[size];
34     for(int i=0;i<size;i++)
35         p[i]=x.p[i];
36         
37     cout<<"deep copy..."<<endl;
38 }
39 int &Vector_int::at(int ind){
40     return p[ind];
41 }

 

source code in task4.cpp :

 1 #include "Vector_int.hpp"
 2 int main() {
 3     using namespace std;
 4     int n;
 5     cin>>n;
 6     Vector_int x(n);
 7     Vector_int x_(n,6);
 8     cout<<x_.at(0)<<endl;
 9     Vector_int y(x);
10     y.at(0)=999;
11     cout<<y.at(0)<<endl;
12 }

 

The Running results :

 

 

 

 

 

  • 实验任务5

source code in Matrix.hpp :

 1 #ifndef MATRIX_H
 2 #define MATRIX_H
 3 #include<iostream>
 4 using namespace std;
 5 class Matrix{
 6 public:
 7     Matrix(int n);                     // 构造函数,构造一个n*n的矩阵
 8     Matrix(int n, int m);              // 构造函数,构造一个n*m的矩阵
 9     Matrix(const Matrix &X);           // 复制构造函数,使用已有的矩阵X构造
10     ~Matrix();                         //析构函数
11     void set(const double *pvalue);     // 用pvalue指向的连续内存块数据为矩阵赋值
12     void set(int i, int j, int value); //设置矩阵第i行第j列元素值为value
13     double &at(int i, int j);          //返回矩阵第i行第j列元素的引用
14     double at(int i, int j) const;     // 返回矩阵第i行第j列元素的值
15     int get_lines() const;             //返回矩阵行数
16     int get_cols() const;              //返回矩列数
17     void print() const;                // 按行打印输出矩阵
18 private:
19     int lines; // 矩阵行数
20     int cols;  // 矩阵列数
21     double *p; // 指向存放矩阵数据的内存块的首地址
22 };
23 Matrix::Matrix(int n):lines(n),cols(n){
24     p=new double[lines*cols];
25 }
26 Matrix::Matrix(int n,int m):lines(n),cols(m){
27     p=new double[lines*cols];
28 }
29 Matrix::Matrix(const Matrix &X):lines(X.lines),cols(X.cols){
30     p=new double[lines*cols];
31     for(int i=0;i<lines;i++)
32         for(int j=0;j<cols;j++)
33             p[i*lines+j]=X.p[i*lines+j];
34 }
35 Matrix::~Matrix(){
36     delete[] p;
37 }
38 void Matrix::set(const double *pvalue){
39     for(int i=0;i<lines;++i)
40         for(int j=0;j<cols;++j)
41             p[i*lines+j]=*pvalue++;
42 }
43 void Matrix::set(int i, int j, int value){
44     p[i*lines+j]=value;
45 }
46 double& Matrix::at(int i, int j){
47     return p[i*lines+j];
48 }
49 double Matrix::at(int i, int j) const{
50     return p[i*lines+j];
51 }
52 int Matrix::get_lines() const{
53     return lines;
54 }
55 int Matrix::get_cols() const{
56     return cols;
57 }
58 void Matrix::print() const{
59     for(int i=0;i<lines;++i){
60         for(int j=0;j<cols;++j){
61             cout<<p[i*lines+j];
62             
63             if(j!=cols-1)
64                 cout<<",";
65             else 
66                 cout<<endl;
67         }
68     }
69 }
70 #endif 

 

 

The Running results :

 

 

posted @ 2021-11-10 12:48  枕梦轻和  阅读(16)  评论(3编辑  收藏  举报