我正在阅读 Effective C++,它告诉我“仅通过常量不同的成员函数可以被重载”。
本书的例子是:
class TextBlock {
public:
const char& operator[](std::size_t position) const;
char& operator[](std::size_t position);
private:
std::string text;
}
下面的示例使用存储的指针。
class A {
public:
A(int* val) : val_(val) {}
int* get_message() { return val_; }
const int* get_message() { return val_; } const;
private:
int* val_;
};
我得到:
错误 C2556:“const int *A::get_message(void)”:重载函数仅与“int *A::get_message(void)”的返回类型不同
有什么区别?有什么办法可以修复这个类,所以我有一个 const 和非常量版本的 get_message?