Using Vector, is it okey?
   
    #include <iostream>
    #include <vector>

    using namespace std;

    class Matrix {

    private:
    vector< vector<double> > array;
    int row, column;

    public:

    Matrix(int m, int n) {
        row = m;
        column = n;
        array = vector< vector<double> > (m, vector<double> (n, 0));
    }


    Matrix(Matrix &matrix){
        this->array=matrix.array;
        this->row=matrix.row;
        this->column=matrix.column;
        
    }
    void print(){
        for(int i=0;i<this->row;++i){
            for(int j=0;j<this->column;++j)
                printf("%f\t",this->array[i][j]);
            printf("\n");
        }
        
     }
     vector<double> & operator [](int m){
         return this->array[m];
     }
     };
    
                
-----------
I would like to make a `Matrix` class in cpp. Can any of you help me about this class?

     #include <iostream>
     using namespace std;

     class matrix
     {
      int **p, m, n;
    public:
       matrix(int row, int col)
    {
        m = row;
        n = col;
        p = new int*[m];
        for (int i = 0; i < m; ++i)
        {
            p[i] = new int[n];
            for (int j = 0; j < n; ++j)
                p[i][j] = 0;
        }
    }
    
        ~matrix()
        {
            for(int i=0;i<m;++i)
                delete [] p[i];
            delete [] p;
            
        }
    
    void accept()
    {
        cout<<"Enter matrix elements: ";
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < n; j++)
            {
                cin >> p[i][j];
            }
        }
    }
    
    void display()
    {
        cout <<"The matrix is:\n";
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < n; j++)
            {
                cout << p[i][j] <<" ";
            }
            cout <<endl;
        }
    }
    
    matrix& operator+ (const matrix& m1)
    {
        return (*this += m1);
    }
    
    matrix& operator* (const matrix& m1)
    {
        return (*this *= m1);
    }
    
    matrix& operator+= (const matrix& rhs)
    {
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < n; j++)
            {
                p[i][j] += rhs.p[i][j];
            }
        }
        return *this;
    }
    
    matrix& operator*= (const matrix& T)
    {
        if(n == T.m)
        {
            for(int i = 0; i < T.m; ++i)
            {
                for(int k = 0; k < n; ++k)
                {
                    p[i][k] *= T.p[k][i];
                }
            }
        }
        
        return *this;
      }
    
      matrix& operator= (const matrix& T)
      {
        p = T.p;
        n = T.n;
        m = T.m;
        
        return *this;
    }
    
    };


     int main()
      {
    matrix rf(3,3), ff(3,3);
    rf.accept();
    cout << "\nrf\n";
    rf.display();
    
    ff.accept();
    cout << "\nff\n";
    ff.display();
    
    cout << "\nff = ff + rf\n";
    ff = ff + rf;
    ff.display();
    
    cout << "\nff = (rf * ff)\n";
    ff = (rf * ff);
    ff.display();
    
    cout << "\nrf += ff\n";
    rf += ff;
    rf.display();
     }