玩命加载中 . . .

03-const代替#define


尽可能使用const代替#define

有时候需要重载const版本与非const版本的成员函数,但他们的代码又很多重复
所以可以直接用非const函数调用const函数

class Text {
private:
    string text;
public:
    Text(string input): text(input) {}
    const char& operator [] (size_t pos) const {
        cout << "const operator: ";
        return text[pos];
    }
    char& operator [] (size_t pos) {
        cout << "non-const operator: ";
        // return text[pos];
        return const_cast<char&>(static_cast<const Text&>(*this)[pos]);
    }
};

int main(int argc, char const *argv[])
{
    Text t("hello");
    cout << t[0] << endl;
    return 0;
}

static_castthis指针转换为const指针,这样就可以调用const operator[]
const_cast将返回值解除const


文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录