c++ - 用于右值和左值情况的 [] 运算符的两个版本

标签 c++ operator-overloading

我已经实现了 int 的集合。我想要 [] 运算符的版本:

  1. 返回 int 的一个,当需要 rvalue 时使用。例如,当用户尝试读取集合中的给定位置时。如果该位置的元素不存在,则抛出异常。
  2. 返回 int& 的一个,当需要 lvalue 时使用,用于在给定位置存储值。如果这个位置的元素不存在,函数应该为它分配空间。

这样做的惯用方式是什么?

最佳答案

我不明白你为什么需要它 - 据我所知,左值可以转换为右值,所以一个 int& operator[] 应该足够了。

不可能有两个具有相同名称和相同参数列表的函数,即使它们具有不同的返回类型也是如此。

如果您确实需要两种方法,可以在其中一个应用程序中使用 operator()

关于c++ - 用于右值和左值情况的 [] 运算符的两个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24694573/

相关文章:

c++ - 实现无临时转换运算符

c++ - 在 Qt 中用像素图画笔画一条线?

c++ - 在 C++ 程序中读取命令行参数时出现内存错误

c++ - 是否可以在 [win-builder](http ://win-builder. r-project.org/) 上构建一个使用 Rcpp 和 Boost.Thread 的 R 包?

c++ - 具有自由许可的跨平台 Gui 库

haskell - 使用具有约束字段的数据类型代替约束

c++ - 带有可变参数模板包的类模板的输出运算符

c++ - 理性类和 move 语义不起作用

c++ - C++中的运算符重载

c++ - 动态数组和运算符重载导致内存崩溃