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;}//* 解引用//深拷贝 newm_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");
}