这里谈谈c++里面两个特别的语法糖 —-运算符重载和有元。为什么说是特别?
- 难以理解,特别装逼,完全可用其他方式替代,比如运算符重载就是一个函数,完全可用函数替代,而且重载的运算符函数根本无法重名字理解函数的意思….
- 很多语言都没有,比如java 不会有这么复杂的事情,感觉像块鸡肋
如果不是考试,我永远不会学这种东西。
目录
运算符重载
首先你要有一个观念就是运算符也是一个函数,也是有参数的,所以他也能重载,比如 <
二元运算符 。我们举个第4节Date类的例子我们可以,我们重载运算符来比较 两个Date的大小
class Date{
....
bool operator < (const Date & o)const{
if(this->yy == o.yy){
if(this->mm == o.mm)return this-> dd < o.dd;
else return this-> mm < o.mm;
}else return this-> yy < o.yy;
}
...
};
int main(){
Date d1(2018,6,5);
Date d2(2019 ,6,5);
cout << (d1 < d2) << "\n";
return 0;
}
你应该能从上面的 重载比较运算符中总结出一个特殊的声明模式
<返回值类型> operator <重载运算符号> (函数参数){
....
}
可能你会问 <
运算符是二元运算符为什么只有一个参数?
别忘了在类中的成员函数默认会有一个参数就是该类自己,即成员函数总是应该与类相关的,所以这里我特别用了一个 this
指针,this