c++ - 如何使用重载运算符 [] 为左侧赋值?

标签 c++ operator-overloading

我做了以下代码:-

class A{
     bool bFlag[2];
public:
  A(){
      for(int  i = 0; i < 2; i++)
          bFlag[i] = false;
  }

  bool operator[](int r){ //i know how to assign value to R.H.S using operator[]
      if( r >= 0 || r < 2 ){
          bFlag[r] = true;
          return bFlag[r];
   }
   return false;        
  }   
};

int main(){
    A obj;
    bool x;
    x = obj[0]; //this i know
    //obj[1] = x; //how to do this is my doubt?
    return 0;
}

我不知道使用 operator[] 将值设置为 L.H.S。 请指导我如何将 x 值设置为 obj[1]

最佳答案

要将 [] 用作左值,您重载的 [] 应该通过引用返回。

可以返回对私有(private)成员的引用吗?
,非常好。
如果您看到 STL,大多数 STL 类都会这样做。
规则是,如果您不希望用户修改那里的内容,或者如果您想让用户修改它,您可以返回一个 non const 引用。

您基本上通过将类的用户设为private 来向类的用户隐藏(抽象)类的详细信息,但您仍然提供能够修改单个元素的功能。

关于c++ - 如何使用重载运算符 [] 为左侧赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6692982/

相关文章:

c# - 为什么我不能在 C# 中重载 += 运算符?但我还能用吗?

c++ - 实现许可检查库

c++ - 重载运算符&& 和||创建一个保存动态逻辑的类

c++ - 重载流插入和提取操作符

c++ - &rhs != this,将引用与指针进行比较?

c++ - operator <= 重载 2 个类并转换 ctor

c++ - 使用 gradle native 构建失败

c++ - 我加密但无法使用 C++ 执行文件解码

c++ - std::iostream 链接错误 vs2010 rc1

java - android opencv 3.4.1 构建命令失败。 undefined reference