我正在阅读"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.但是我收到了一个错误.我听说重载的函数不能有不同的返回类型,但看到这个后我不知道该怎么想.
我觉得这本书说的
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是函数签名的一部分,返回类型不是.
| 归档时间: |
|
| 查看次数: |
5755 次 |
| 最近记录: |