上次看了前三个,这次我们来看看后面的几个有关操作数重载的成员函数
四、赋值运算符重载
我们都知道赋值运算符“=“是用来给变量赋值的,那么类的对象之间的赋值是不是也是用它呢?但是”=“只能用来对单个的变量赋值的,所以我们就得对赋值运算符进行重新加工(专业点说就是对赋值运算符进行运算符重载)
对象赋值的一般形式为:
对象名1=对象名2;
CDate d1,d2;//定义两个类的对象
d2=d1;
CDate d2(d1);//将stud1赋值给stud2
那么函数就需要调用类里面的赋值运算符重载了~
首先 运算符重载关键字”operator“
赋值运算符重载的一般形式:
返回值类型+operator+操作数符号+(参数列表)
例如对上述CDate类进行运算符重载
CDate& operator=(const CDate& c)
{
if (this != &c)
{
_year = c._year;
_month = c._month;
_day = c._day;
}
return *this;
}
五、取地址操作符重载和const修饰的取地址操作符重载
为了更好的看出它们之间的区别,我们把这两个成员函数放在一起来看~
看下面的代码:
class Test
{
public:
Test* operator&()//1
{
return this;
}
const Test* operator&()const//2
{
return this;
}
};
int main()
{
Test t; //3
cout<<&t<<endl;
const Test t1; //4
cout << &t1 << endl;
system("pause");
return 0;
}
调试之后,得出: