不能仅通过返回类型来区分过载功能

Ant*_*ton 3 c++ overloading

我正在阅读"Effective C++"并尝试从规则3编译此示例:

class TextBlock
{
public:
    const char& operator[](size_t position) const
    {
        return text[position];
    }
    char& operator[](size_t position) const
    {
        return const_cast<char&>(
            static_cast<const TextBlock&>(*this)
            [position]
        );
    }
private:
    string text;
};
Run Code Online (Sandbox Code Playgroud)

这必须描述如何防止代码重复; 不写相同的代码来返回非const结果.我正在使用VS2012.但是我收到了一个错误.我听说重载的函数不能有不同的返回类型,但看到这个后我不知道该怎么想.

Luc*_*ore 6

我觉得这本书说的

const char& operator[](size_t position) const
char& operator[](size_t position)
Run Code Online (Sandbox Code Playgroud)

const char& operator[](size_t position) const
char& operator[](size_t position) const  <--- extra const here
Run Code Online (Sandbox Code Playgroud)

cv-qualifiers是函数签名的一部分,返回类型不是.

  • @tenfour不是那个`std :: string :: operator []`吗? (2认同)