在重载中返回常量元素
Returning a const element in an overload
在一个类中,我被要求重载[]并返回常量和非常量字符:
char * data_;
char & operator [] (size_t index);
const char & operator [] (size_t index) const;
我对两者都有相同的实现,并且它可以编译,但我确信我在这里遗漏了一些东西:
const char & Array::operator [] (size_t index) const
{
return data_[index]; // todo: needs to be const?
}
如何确保返回的字符不可修改?
如何确保返回的字符不可修改?
返回类型const char&
中的const
确保字符不能通过返回的引用进行修改。
然而,请注意,可能最好返回char
(即,按值计算的char
,而不是对const char
的引用)。当您有一个大对象(因为在许多情况下可以避免复制大量字节)或在泛型代码中(因为您不知道可能出现的所有类型的大小)时,返回const引用是有用的,但当返回已知的小对象(不会比char
小)时,您可以按值返回它。
相关文章:
- 如何在 c++ stl 中获取列表中被推回的元素的地址,在常量时间内?
- 是否可以使用 new 指定具有宏常量的动态分配数组的元素?
- 常量数组如何在每个元素中只能包含字符,而 char* 数组能够指向每个元素中的字符串?
- 常量映射和常量元素映射之间的区别
- 如何打印出常量字符串的第一个元素?
- 如何从模板获取常量矢量元素的引用
- 使用常量键从集合中擦除元素
- 返回对私有向量成员元素的非常量引用是否是一种不好的做法
- 使用对另一个元组不同类型的元素的非常量引用来初始化元组的元素
- 通过const_cast修改常量 std::vector 的元素<T>
- 对列表中的任意元素的常量时间访问 (C++)
- 错误推回对常量向量元素的引用
- 常量时间更改数组的前 k 个元素(C++)
- 如果 QList 实例是常量,是否意味着每个元素都是常量
- 如何删除类型名中每个元素的常量引用修饰符.T.
- 如何调用 boost multi_index元素的非常量成员函数
- 标准::矢量元素中的常量引用
- 常量向量暗示常量元素
- 从常量迭代器到映射向量,获取映射向量中映射元素的键和值
- 在重载中返回常量元素