关于下标操作符重载,书C++ Primer例子错误,求解答

zh359780498 zh359780498 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
C++ Primer 第四版
14.5. 下标操作符
下面是书本源码,稍作修改,只为初始化。。

class Foo 
{
public:
Foo()
{
for (int i = 0; i < 10; i++)
{
data.push_back(i);
}
}
int &operator[] (const size_t);
const int &operator[] (const size_t) const;
// other interface members
private:
std::vector<int> data;
// other member data and private utility functions
};

// 下标操作符本身可能看起来像这样:
int& Foo::operator[] (const size_t index)
{
return data[index]; // no range checking on index
}
const int& Foo::operator[] (const size_t index) const
{
return data[index]; // no range checking on index
}

int _tmain(int argc, _TCHAR* argv[])
{
Foo a;
a[0] = 145; // 作左值
int n = a[0]; // 作右值
return 0;
}


发现两次都是调用的 int& Foo::operator[] (const size_t index)
何时才能调用 const int& Foo::operator[] (const size_t index) const
求正解。
...全文

相关推荐

C++Primer课后习题解答完整版.pdf

例如,缺少左操作数的错误可以通过在"<<"操作符前加上std::cout来解决。8.

zhenyu wu

C++ Primer Plus习题实践指南:从环境搭建到项目实战

C++作为一门核心的系统编程语言,其学习过程往往伴随着从理论理解到动手实践的挑战。理解变量、函数、类等基础概念是第一步,但真正掌握C++的关键在于通过实践将知识内化,这涉及到内存管理、多态、模板等高级特性的实际运用。对于学习者而言,配置一个高效的开发环境是首要任务,例如使用GCC或MSVC编译器,并搭配Visual Studio Code等现代编辑器进行代码编写与调试。通过系统地完成教材习题和运行示例代码,学习者能够跨越从“看懂”到“会写”的鸿沟,尤其对于指针、动态内存、STL等难点,结合“错题本”和分阶段

weixin_33933118

C++ Primer Plus 第6版 第9章 编程练习答案

1. 编写三个文件 注意:记得运用C风格字符串函数:strcpy()、strcmp(),以及如何比较字符串和空字符串。 // golf.h -- for pe9-1.cpp const int Len = 40; struct golf { char fullname[Len]; int handicap; }; // 重载形式1:输入并设置结构golf中的参数,无返回值,非交互形式 void setgolf(golf&amp; g, const char* name, int hc); /

Candy.L

C++书籍权威指南与列表

C++ 是一门庞大且复杂的编程语言,与许多可通过网上教程快速上手的编程语言不同,若不研读一本优质的 C++ 书籍,很难快速掌握 C++。市面上存在大量质量不佳的 C++ 书籍,这些书不仅风格欠佳,还存在明显的事实性错误,并且倡导糟糕的编程风格。因此,收集优质的 C++ 书籍并按不同技能水平分类推荐显得尤为重要。

1010n111

cpp_primer5_solution:我对“C++ Primer 5th”一书的解答

在“cpp_primer5_solution-master”这个项目中,作者提供了对书中习题的解答,这些解答涵盖了以上提到的各个知识点,并可能深入到更多细节,如内存管理、模板元编程、并发编程、C++标准库的高级用法等

唐荣轩
评论 9
收藏 已收藏
分享
返回顶部
zh359780498
C++ 语言 65,214 成员 250,514 内容