通过重载[],了解如何将值分配给类中的第二个数组成员

by overloading [], how to assign values to the second array member in a class?

本文关键字:分配 组成员 数组 第二个 重载 了解      更新时间:2023-10-16

我是一个学习者。我正在处理操作员过载问题。我正在编写一个包含以下项目的代码:1.具有两个成员数组的类2.重载[]功能如果我的类只有一个数组成员,我可以重载[]来分配值。但是,我该怎么做才能将值分配给第二个成员数组。下面是我的代码:

#include <iostream>
#include <cassert>
class Digit
{
private:
    int digit1[3]{0};
    int digit2[4]{0};
public:    
    int& operator[](const int index);
    ostream& operator<<(ostream& out);
};
int& Digit::operator[](const int index)
{
    return digit1[index];
}
ostream& Digit::operator<<(ostream& out)
{
    int loop;
    out << "{";
    for (loop = 0; loop < 10; loop++)
    {
        out << digit1[loop] << " ";
    }
    out << "}";
    return o;
}
int main()
{
    using namespace std;
    Digit n;
    n[0] = 4;
    n[1] = 3;
    n[2] = 4;

    n << cout;
    return 0;
}

在上面的代码中,如何重载[]为digital2[4]赋值?

operator[]是您自己的函数;您可以按照自己的意愿重新解释索引——这是一个简单的参数。

例如,您可以说索引0..2地址为digit1,而索引3及以上地址为digit2:

int& Digit::operator[](const int index)
{
    return index < 3 ? digit1[index] : digit2[index];
}

这只是解释index的一种可能方式。可以说,正数是digit1的索引,负数是digit2:的索引

int& Digit::operator[](const int index)
{
    return index >= 0 ? digit1[index] : digit2[-index];
}