C++ 124类和对象_运算符重载_赋值
学习内容
解决自定义对象之间赋值是因析构函数重复释放内存时引发的异常问题
结果
代码
#include<iostream>
using namespace std;//cout 在这里,没有它会报错
//类和对象_运算符重载_赋值
//学习内容
//解决自定义对象之间赋值是因析构函数重复释放内存时引发的异常问题
class Person
{
public:
Person(int age)
{
m_Age = new int(age);
}
int *m_Age;//存内存地址,存指针
Person& operator=(Person &p)
{
//应该先判断是否有属性在堆区,如果有先释放干净,然后再深拷贝
if (m_Age != NULL)
{
delete m_Age;
}
//* 解引用
//深拷贝 new
m_Age = new int(*p.m_Age);
return *this;//返回引用
}
/// <summary>
/// 析构函数 主要用于对象销毁时释放内存
/// </summary>
~Person()
{
if (m_Age != NULL)
{
delete m_Age;//清空内存
}
}
};
void test01()
{
Person p1(18);
Person p2(28);
Person p3(38);
p3 = p2 = p1;
cout << "年龄:" << *p1.m_Age << endl;
cout << "年龄:" << *p2.m_Age << endl;
cout << "年龄:" << *p3.m_Age << endl;
}
int main()
{
test01();
system("pause");
}