尾置const:参数列表相同却重载的函数

观察下面两个函数,它们具有相同的参数列表,貌似无法重载:

  1.      string& operator[](size_t n) {

return elements[n];

}

  2.      const string& operator(size_t n) const {

return elements[n];

}

但实际上,函数2的尾置const使得对*this进行了筛选,于是:

当非const对象调用时,匹配1;

而const对象调用时,匹配2;

从而实现了重载。

 

ps:函数1,2事实上实现了下标运算符常量版本与非常量版本的重载。

 

posted @ 2023-04-06 18:36  南极沙丁鱼  阅读(34)  评论(0)    收藏  举报