#include <iostream>
using namespace std;
class Person
{
private:
int age;
int *p;
public:
//无参构造
Person():p(new int(89))
{
age = 18;
cout << "无参构造函数" <<endl;
}
//有参构造
Person(int age,int num)
{
this->age = age;
this->p=new int(num);
cout << "有参构造函数" <<endl;
}
//拷贝构造函数
Person(Person &other)
{
this->age=other.age;
this->p=new int(*other.p);
cout << "拷贝构造函数" << endl;
}
//拷贝赋值函数
Person &operator=(const Person &other)
{
if(this!=&other)
{
age=other.age;
p=new int(*other.p);
}
cout << "拷贝赋值函数" << endl;
return *this;
}
//析构函数
~Person()
{
cout << "释放了" << p << "所指向的空间" <<endl;
delete p;
p=nullptr;
//cout << "释放了p所指向的空间" <<endl;
}
};
int main()
{
Person P0;
Person P1(100,51);
Person P2=P1;
return 0;
}