C++ 07_ 赋值运算符重载

本文介绍了C++中运算符重载的概念及其应用,通过日期类的实例展示了如何使用运算符重载简化代码,提高可读性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++为了增强代码的可读性引入了运算符重载, 运算符重载本质上是具有特殊函数名的函数, 也具有其返回值类型, 函数名字以及参数列表, 其返回值类型与参数列表与普通的函数类似.

函数名字为:关键字operator后面接需要重载的运算符符号.

函数原型:返回值类型operator操作符(参数列表)

注意:

  1. 不能通过连接其它符号来创建新的操作符: 比如operator@  , @这个字符本身不是操作符
  2. 重载操作符必须要有一个类 类型或者枚举类型的操作数
  3. 用于内置类型的操作符,其含义不能改变, 例如:内置的整型+, 不能改变其含义
  4. 作为类成员的重载函数时, 其形参看起来比操作数, 数目少1个成员函数的操作符有一个默认的形参this, 限定为为第一个形参
  5. 不能重载的运算符    (1)  .*       (2) ::      (3)sizeof    (4)?:     (5).

假设现在有一个需求, 需要直接判断日期是否相等, 我们以日期类和 '==' 运算符为例 , 具体认识一下运算符重载的作用

class Date
{
public:
	Date(int year = 1900, int month = 1, int day = 1)
	{
		_year = year;
		_month = month;
		_day = day;
	}

private:
	int _year;
	int _month;
	int _day;
};

// '=='函数重载函数
bool operator==(const Date& d1,  Date& d2)
{
	return d1._year == d2._year
	    && d1._month == d2._month
		&& d1._day == d2._day;
}


int main()
{
    d1(2022,12,7)
    d2(2022,12,8)
    cout << (d1 == d2) <<endl;
    return 0;
}

'=='函数重载之后, 我们就可以任意判断两个日期是否相等,  相较于之前用函数传参的写法来说是会方便许多.  同样的道理, 我们可以对 '>='  '<='  '+='  '-='等预算符进行重载, 那么对于这个日期类而言, 就可以随意对比较或者加减, 这样就很有意义了.

赋值运算符主要有四点:

1. 参数类型

2. 返回值

3. 检测是否自己给自己赋值

4. 返回*this

5. 如果一个类没有显式定义赋值运算符重载, 编译器也会生成一个, 完成对象按字节序的值拷贝.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值