C++类中6个默认的函数(二)

本文介绍了C++类中赋值运算符的重载函数,讲解了其作用、形式、实现过程,并探讨了与拷贝构造函数的区别。通过示例详细解释了赋值运算符重载的必要性和常见实现策略,包括自赋值检查、资源管理等。同时,文章还讨论了临时对象的生存周期、const修饰形参的原因及其优化。
摘要由CSDN通过智能技术生成

前面已经介绍过类中6个默认函数的其中三个:构造函数、析构函数、拷贝构造函数;今天来看一下第四个默认的函数:赋值运算符的重载函数。

赋值运算符的重载函数

1、赋值运算符的重载函数的作用:     

把一个已存在的对象赋值给相同类型的已存在对象

2、赋值运算符的重载函数的形式(以上篇文章中的商品CGoods类为例):

CGoods& operator=(const CGoods& rhs)
	{
		if (this != &rhs)
		{
			delete[] mname;
			mname = new char[strlen(rhs.mname) + 1]();
			strcpy(mname, rhs.mname);
			mprice = rhs.mprice;
			mamount = rhs.mamount;
		}
		return *this;
	}

3、实现:

由上述赋值运算符的重载函数的例子可以总结出该函数的实现:

        (1)判断是否为自赋值

        (2)释放旧资源

        (3)申请新资源

        (4)赋值

4、与拷贝构造函数相似,默认的赋值运算符的重载函数也是浅拷贝的

为什么赋值运算符的重载函数要像上述代码中那样写呢?我们先来看以下几个概念:

       1、临时量:

            (1)内置类型生成的临时量为常量

            (2)自定义类型生成的临时量为变量

            (3)隐式生成的临时量为常量

        2、临时对象的生存周期:

              表达式结束

        3、CGoods& operator=(const CGoods& rhs)中const修饰形参的原因:

           (1)防止修改实参

          (2)接收隐式生成的临时对象

        4、临时对象的优化:

           (1)如果临时对象的目的是为了生成新对象,则以生成临时对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值