赋值运算符重载用于解决赋值操作的浅拷贝问题;
#include#include using namespace std; class Person { public: int *m_age; //构建函数 Person(int age) { //将年龄数据开辟到堆区; m_age = new int(age); } //重载赋值运算符 Person& operator=(Person& p) { if (m_age) { delete m_age; m_age = NULL; } //编译器提供的拷贝;浅拷贝 //m_age=p.m_age; //深拷贝; m_age = new int(*p.m_age); //返回自身,实现链式编程; return *this; } //析构函数 ~Person() { if (m_age) { delete m_age; m_age = NULL; } } }; int main() { Person p1(18); Person p2(20); Person p3(30); //赋值 p1 = p2=p3; cout << *p1.m_age << endl; cout << *p2.m_age << endl; cout << *p3.m_age << endl; system("pause"); return 0; }



