我们都知道const成员函数只能调用非const成员函数
但是有的时候,我们为了代码复用
例如:
T operator[](int i) const;
T& operator[](int i);
为了实现const和非const两个版本,我们选择使用重载,但是里面的内容可能是相同的,为了代码复用可以:
T& operator[](int i) {
if( (i >= 0) && (i < m_length) ) {
return m_array[i];
}
else {
THROW_EXCEPTION(IndexOutOfBoundsException, "T& operator[](int i) i");
}
}
T operator[](int i) const{
return const_cast<SeqList&>(*this)[i];
}
使用 const_cast<SeqList&>(this),把const版本的this转化为非const然后调用非const版本的[],因为const只在编译期,在运行期是不存在const的
原文链接: https://www.cnblogs.com/chaohacker/p/12976851.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/351090
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!