C++ 重写[]运算符
2021-01-03 16:28
标签:报错 引用 不能 左值 ace turn src 结果 c中 数组下标运算符[]通常用于访问、修改一个对象中的数据域或者元素。而现在,我们希望它的功能是:访问有理数(C++ 有理数类)的分子和分母。 首先我们在Rational.h文件的public中添加: 然后在Rational.cpp文件中实现函数: 我们测试一下结果: 可以看到,我们重载的运算符实现了正常的功能。 但我们想要像修改数组元素一样修改分子或分母,是否可行呢? 假如我么想要把r1的分子修改成3,分母修改成2。测试一下: 发现编译器报错了。大概意思是运算符不能在左值的一边。 为什么呢? 这是因为我们要修改的值的地址,和分子或分母的地址不同。那么怎么样实现赋值操作呢? 这就用到了我们之前说到的引用返回(C++ 引用返回)。 也就是说,为函数签名 加上符号“&”,变为 就可以了。 我们来测试一下: C++ 重写[]运算符 标签:报错 引用 不能 左值 ace turn src 结果 c中 原文地址:https://www.cnblogs.com/bwjblogs/p/12989556.htmlint operator[](int index);
int Rational::operator[](int index) {
//若为0,则返回分子;否则,返回分母
if (index == 0) {
return this->numerator;
} else {
return this->denominator;
}
}
#include
r1[0] = 3;
r1[1] = 2;
int Rational::operator[](int index)
int& Rational::operator[](int index)
#include
下一篇:java设计模式