1.赋值运算符重载
1.1运算符重载
1.2赋值运算符重载
1.3其它特性
2.const成员函数
3.取地址及const取地址操作符重载
hello,欢迎大家来到小恶魔频道,今天讲解的是C++里面的赋值运算符重载以及const成员函数
1.赋值运算符重载
1.1运算符重载
运算符重载是一种编程语言特性,它允许开发者为已有的运算符提供自定义的实现。这意味着你可以改变某些运算符在你自定义的类或数据类型上的行为。比如,你可以定义加号运算符(+)如何在你自定义的数据结构上进行运算
class Date { public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; } int _year; int _month; int _day; }; int main() { Date d1(2024, 4, 22); Date d2(2024, 1, 1); return 0; }
像以上代码
在这个代码中,我们如何比较d1和d2的是否相同呢?
常规方法:写一个函数去比较
bool Compare(const Date& dt1,const Date& dt2) { return dt1._year == dt2._year && dt1._month == dt2._month && dt1._day == dt2._day; }
运行完后发现为0,也就是不相等
那么如果接下来我们想要直接比较d1==d2
这时候就会运用到运算符重载
运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似,注意这里说的重载与我们的函数重载不是一个意思
C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类 型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。
函数名字为:关键字operator后面接需要重载的运算符符号。
函数原型:返回值类型 operator操作符(参数列表)
所以这里我们可以改写为:
bool operator==(const Date& dt1,const Date& dt2) { return dt1._year == dt2._year && dt1._month == dt2._month && dt1._day == dt2._day; }
int main() { Date d1(2024, 4, 22); Date d2(2024, 1, 1); cout