Overloading(小结)

本文详细介绍了类成员运算符重载的概念及其应用,包括如何实现深复制以避免内存泄漏,并提供了下标运算符及友元运算符重载的具体实例。

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

类成员运算符重载

(1)类成员操作符重载
c3 = c2 - c1;
该表达式的值为与c3相等的临时对象
(2)不含指针成员的类采用缺省赋值符即可,但是含有指针的类必须自定义赋值符,实现深复制

浅复制只是将指针指向另一块内存空间,原来所指向的内存空间将永久性消失,从而出现内存垃圾,不仅如此,还会出现释放同一块内存多次的情况,这是不允许的.

因此需要进行深复制,先释放原来的内存空间,然后重新分配内存空间,再把需要复制的内容拷贝到新的内存空间中,既避免了内存垃圾,也避免了指针别名.

注意,new 和 delete 必须成对使用, new了新的内存,但没有手动delete会出现runtime error

下标运算符重载

int& operator[](int index) {
   return data[index];
}

友元运算符重载

常常是重载输入输出符, istream >> , ostream <<
域作用符不能够重载

友元函数可以访问该类的私有或者是受保护成员

破坏了类的封装性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值