1.赋值运算符
先以赋值运算符引入后面要说的运算符重载,上一节说了构造函数、拷贝构造函数;一个类要想进行更好的控制,需要定义自己的构造函数、拷贝构造函数、析构函数、当然,还有赋值运算符。常说的三大函数就是指拷贝、赋值、析构。
如果一个类不定义自己的赋值运算符,会自己生成一个默认的赋值运算操作,这个默认的赋值运算满足一般类的需求。它实现的是一个浅拷贝。但是当类的功能、作用逐渐完善时,就会出现很多问题,所以,通过自定义赋值运算符来控制赋值操作时类的行为是很有必要的。当一个类的对象与对象之间发生赋值(=)运算时,就会调用重载的赋值运算符函数。
还是以上节的例子来说,看代码:
#include <iostream>
#include <new>
#include <string>
using namespace std;
class Person
{
public:
Person();
Person(int n, const string &str);
Person(const Person &n);
Person &operator=(const Person &p);//赋值运算符函数
~Person();
private:
int age;
string *name;
};
Person::Person():age(0), name(NULL)
{
cout << "Default Person" << endl;
}
Person::Person(int n, co