通过重载[],了解如何将值分配给类中的第二个数组成员
by overloading [], how to assign values to the second array member in a class?
我是一个学习者。我正在处理操作员过载问题。我正在编写一个包含以下项目的代码: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];
}
相关文章:
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- 将C++浮点数组成员直接封送到 C#,而无需复制
- 无法将错误分配给成员函数中"类型的实体"
- 用于对项目进行分组并将单个项目映射到其他组成员的数据结构
- C++ - 移动具有固定大小的 c 样式数组成员的类的构造函数
- C++内联数组成员统一初始化
- 有没有办法把字符串数组成员放在".structurevariable"前面?
- 在C++中,从构造函数中将字符串文本分配给成员const char*变量时会发生什么
- C++ 在具有数组成员的类上无效指针/双精度释放
- 将初始化列表传递给 C++ 中的数组成员
- 如何将内存分配给具有数组成员的类的实例
- 友元函数将内存分配给数组成员是否有任何限制?
- 如何在C 中的派生类中分配数据成员数组
- 将整数值分配为variadic模板列表到静态const std ::数组成员
- 分配给数组成员时在 Clang 中"Read-only variable is not assignable"
- 通过重载[],了解如何将值分配给类中的第二个数组成员