const函数重载

 前段时间自己写了一个简单的List模板类,List类中有两个嵌套类,分别是const_iterator和iterator,其中后者是前者的子类。在重载List类的=操作符的时候,出现了一个编译上的问题,现在我把部分代码贴上来。

在154行的时候,编译器提示等号两边的类型不匹配,原因是我原来的代码是:iterator itr=rhs.begin()。在重载begin()函数的时候,编译器会自动为函数加入this指针参数,this指针也会成为匹配的条件之一。这个时候const函数加入的是const指针,非const函数加入的是普通指针。 所以160行和164行的两个begin()函数,也算是函数的重载。
rhs是一个const的引用,调用的是const函数begin,返回的是const_iterator类型的,由于const_iterator是父类,自然不能赋值给子类类型。

PS. 复习一下函数重载(overload function) 的概念:出现在相同作用域的两个函数,如果函数名称相同但是形参表不同,成为函数的重载。
函数的重载和重复声明的区别:如果两个函数的返回类型好行参表完全匹配,则将第二个函数声明视为第一个函数 的重复声明。如果两个函数行参表完全相同,但是返回类型不同,则第二个函数的声明是错误的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值