重载运算符与STL

本文探讨了如何通过重载运算符为自定义类型提供更简洁的表达方式,介绍了哪些运算符可以被重载,并展示了重载运算符的两种方法:成员函数和友元函数。同时,文章简述了STL(Standard Template Library)的基本操作,如构造、拷贝、析构、赋值、迭代器和元素操作等,强调了STL在简化代码和提高效率上的优势,鼓励读者深入掌握并灵活运用STL。
摘要由CSDN通过智能技术生成

重载运算符:使得用户自定义的数据以一种更简洁的方式工作

限制:
不能重载的算符:.    ::    .*    ?:    sizeof
可以重载的运算符 :+     -     *     /     %     ^     &     |     ~
                             !     =     <     >     +=     -=     *=     /=     %   
                            ^=     &=     |=     <<     >>     >>=     <<=     ==     !=    
                            <=     >=     &&     ||     ++     --      ->*     ‘     ->        
                            []     ()      new     delete     new[]     delete[]

重载运算符函数可以对运算符作出新的解释,但原有基本语义不变:

I.不改变运算符的优先级
II.不改变运算符的结合性
III.不改变运算符所需要的操作数
IV.不能创建新的运算符

一元运算符:Object  op    或    op  Object 
二元运算符:ObjectL  op ObjectR
重载为成员函数:
一元:Object . operator op () 操作数由对象Object通过this指针隐含传递
二元:ObjectL . operator op ( ObjectR ) 左操作数由ObjectL通过this指针传递,右操作数由参

成员运算符函数的原型在类的内部声明格式如下:

class X 
{
    //…
返回类型 operator运算符(形参表);
  //…
}
在类外定义成员运算符函数的格式如下:  
返回类型 X::operator运算符(形参表)
{
     函数体
}

重载为友元函数:

一元:operator op (Object)  操作数由参数表的参数Object提供
二元:operator op ( ObjectL, ObjectR )  左右操作数都由参数传递 


双目运算符重载为成员函数:对双目运算符而言,成员运算符函数的形参表中仅有一个参数,它作为运算符的右操作数,此时当前对象作为运算符的左操作数,它是通过this指针隐含地传递给函数的。
例:复数加法
#inc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值