我是学习者。我正在进行运算符重载。我正在编写一个包含以下项目的代码: 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;
}
在上面的代码中,如何重载[]来为digit2 [4]赋值?
答案 0 :(得分:1)
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];
}