首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎样使重载的[]运算符也能区分开const和非const的引用?解决办法

2012-02-12 
怎样使重载的[]运算符也能区分开const和非const的引用?我在写一个通用的多项式模板Polynomial C ,多项式

怎样使重载的[]运算符也能区分开const和非const的引用?
我在写一个通用的多项式模板Polynomial <C> ,多项式系数可以是不同的数据类型,作为模板参数C给出.
我重载了[]运算符,使[i]能返回第i个系数,并且当i越界时可以抛出异常.   显然operator[]   (int   i)   应该以引用方式返回,使得poly[i]可以作为左值;
然后我要重载operator+,   函数原型是friend   Polynomial <C> &   operator+   (const   Polynomial <C> &   p1,   const   Polynomial <C> &   p2).   因为加法不应该对被加的两个多项式进行改变,所以以const方式传递参数是理所当然的.
那么现在问题就是:   在operator+   方法的实现里我想要用p[i]=p1[i]+p2[i]这样的形式来对对应项系数相加,   但operator[]返回的是一个非const的引用,这样作为参数的p1和p2又不能以const方式传递.               这个矛盾该怎么解决呢?

[解决办法]
第一,你可以同时提供cosnt的[]和非const的[]重载
第二,你为什么一定要在operator+里使用[]呢?都friend了,直接用和[]里相同的代码来获得数据即可。

热点排行