class A
{
public:
A(int n):m_n(n){
m_ptr = new int(m_n);
}
A(const A& x){
m_n = x.m_n;
m_ptr = new int(m_n);
memcpy(m_ptr, x.m_ptr, sizeof(int)*m_n);
}
A& operator=(const A& x){
m_n = x.m_n;
m_ptr = new int(m_n);
memcpy(m_ptr, x.m_ptr, sizeof(int)*m_n);
return *this;
}//有返回值
~A(){
delete m_ptr;
}
public:
int * m_ptr;
int m_n;
};
int main()
{
//-------------------对象方式-----------------
A test0(10);//构造(函数)
test0.m_ptr[0] = 1;
A test1(test0);//拷贝构造(函数)
cout << test1.m_ptr[0] << endl;
A test2=test1;//运算符重载(函数)
cout << test2.m_ptr[0] << endl;
//----------------对象指针方式-----------------
A* Test0=new A(10);//构造(函数)
Test0->m_ptr[0] = 2;
A* Test1 = new A(*Test0);//拷贝构造(函数)
cout << Test1->m_ptr[0]<< endl;
A Test2 = *Test1;//运算符重载(函数)
cout << Test2.m_ptr[0] << endl;
return 0;
}