我正在创建一个堆,如下所示:
struct Heap {
int H[100];
int operator [] (int i) { return H[i]; }
//...
};
当我尝试从中打印元素时,我确实喜欢这样:
Heap h;
// add some elements...
printf("%d\n", h[3]); // instead of h.H[3]
如果我不想访问,而是想设置它们,如下所示:
for (int i = 0; i < 10; i++) h[i] = i;
我能怎么做?
原文由 Daniel 发布,翻译遵循 CC BY-SA 4.0 许可协议
提供
operator[]
函数的几个重载是惯用的 - 一个用于const
对象,一个用于非const
对象。const
成员函数的返回类型可以是const&
或只是一个值,取决于返回的对象,const
成员的返回类型函数通常是一个参考。这允许您使用数组运算符修改非
const
对象。同时仍然允许您访问
const
对象。