新手求助:指针的拷贝构造函数
也看过了很多资料,发现都是围绕着深构造、浅构造来加以区别的。。但是所有的资料里面都没有谈到指针对象的拷贝构造,所以特来求助(也有可能是我学艺不精没有看懂~各位大神见谅啊~~)
#include<stdlib.h>
#include<iostream>
using namespace std;
class Matrix{
private:
int lines,rows;
public:
int **a;
Matrix( ){
cout<<"请输入矩阵行数:";
cin>>lines;
cout<<"请输入矩阵列数:";
cin>>rows;
int i;
a = new int*[lines];
for (i=0;i<lines;i++)
a[i]=new int[rows];
};
Matrix(const Matrix &A) { //构造函数
this->lines=A.lines;
this->rows=A.rows;
a=new int * [lines];
for (int i=0;i < lines;i++)
a[i]=new int [rows];
}
~Matrix(){ //析构函数
int i ;
for (i=0;i< lines;i++)
delete[] a[i];
delete[] a;
};
Matrix(Matrix &m){
int i ;
this->lines=m.lines;
this->rows=m.rows;
this->a = new int*[lines];
for (i=0;i<lines;i++)
this->a[i]=new int[rows];
cout<<"拷贝完成!" <<endl; }
void InitM(){
int i,j;
for (i=0;i< lines;i++)
for (j=0;j< rows;j++)
cin>>a[i][j];
}
void OutM(){
int i,j;
for (i=0;i< lines;i++)
{ for (j=0;j< rows;j++)
cout<<" "<<a[i][j];
cout<<endl;
}
}
void PlusM(Matrix &A1,Matrix &A2){
int i,j;
for (i=0;i< lines;i++)
for (j=0;j< rows;j++)
this->a[i][j]=A1.a[i][j]+A2.a[i][j];
}
void MinusM(Matrix &A1,Matrix &A2){
int i,j;
for (i=0;i< lines;i++)
for (j=0;j< rows;j++)
this->a[i][j]=A1.a[i][j]-A2.a[i][j];
}
};
main(){
Matrix *pA1=new Matrix;
Matrix *pA2(pA1);
Matrix *pA3(pA1);
cout<<"请输入矩阵pA1:"<<endl;
pA1->InitM();
cout<<"请输入矩阵pA2:"<<endl;
pA2->InitM();
pA1->OutM();
//pA3->PlusM(*pA1,*pA2);
cout<<"pA1+pA2="<<endl;
pA3->OutM();
pA3->MinusM(*pA1,*pA2);
cout<<"pA1-pA2="<<endl;
pA3->OutM();
//delete[] pA1;
//delete[] pA2;
//delete[] pA3;
system("pause");
}