我应该从以下功能中选择什么
What should I choose from the below functions
假设我自己设计了一个String类,并且我想重载运算符[]函数,以下是选项:
String operator[](const size_t index);
String& operator[](const size_t index);
const String& operator[](const size_t index) const;
const、非常数和引用返回类型的任何其他组合。
string
的[]
运算符返回一个字符,而不是字符串。根据具体情况,您应该实现其中的一个或两个:
const char& operator[] ( size_t index ) const;
char& operator[] ( size_t index );
第一个生成了一个不能修改的引用。如果你的字符串是不可变的,那就是你所需要的。
第二个生成了一个可以修改的引用。您可以使用它来实现一些巧妙的东西,例如修改时复制和引用计数。
有些人更喜欢operator[]
的签名参数类型,这既是为了更类似于内置运算符[](他们也支持负索引),也是为了能够检测负值参数(以防进行越界检查)。
C++编译器用于评估调用内置运算符[]的类型是ptrdiff_t
,因此有时会发现以下
char &operator[](ptrdiff_t index);
char operator[](ptrdiff_t index) const;
我通常只使用普通的int
参数类型。
相关文章:
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- 当我选择大于 720 的矩阵大小时,程序退出并显示错误代码.可能是什么原因?
- 从长(且合理)稀疏向量中选择随机元素的最有效方法是什么?
- 在 C++14 中,这种 C++17 倍表达的好选择是什么?
- 我什么时候应该选择"shared_ptr"而不是"make_shared"?
- 谷神星求解器:残差函子使用的可变对象是否良好实践?还有什么其他选择
- 我的选择排序功能C 有什么问题
- 将超时值设置为套接字轮询/选择的最佳实践是什么?
- 有什么方法可以让用户选择要输入哪个变量
- 我应该从以下功能中选择什么
- 你会选择什么平台进行黑莓开发
- 选择什么容器来快速搜索/插入大量数据
- 为小循环计数器选择什么数字类型
- Qt保持构建共享构建无论我选择什么选项
- 对象的存储类型,选择什么更好
- 我应该选择什么类型的Visual Studio c++项目来制作基本的unix应用程序?
- 我选择什么项目模板来制作c++ DirectX DLL ?
- 更好的可读性和简单性vs更高的复杂性和编程速度,选择什么
- 在什么情况下,为Qt MinGW或MSVC选择什么编译器