我在一项任务中被要求实现 IntList,它是动态 int 数组列表,具有“int *p”作为其私有成员。在实现了所有方法(添加、查找、删除等)之后,我不知道如何实现返回的公共方法:
- 获取指向底层 Array 的只读指针。
如何返回具有 *p 数字的指针,其内容不能更改?
您需要编写与此类似的代码:
class A {
int *tab;
public:
A() {
tab = new int[3];
tab[0] = 1;
tab[1] = 4;
tab[2] = 6;
}
const int * get() {
return tab;
}
};
int main() {
A *a = new A();
//(a->get())[0] = 2;
}
然后你就可以看到表格的内容了,但是在类之外改变它的值是不可能的。
尝试取消注释最后一行将导致出现此错误: assignment of read-only location '* a->A::get()' :)
您必须const
在方法签名中使用关键字来告诉编译器返回的内容是常量或不可修改的。由于您要返回一个指针,因此您还必须弄清楚如何区分“无法修改的指针”和“指向无法修改的数据的指针”,以及如何指定哪个想。
您像这样声明一个指向常量类型的指针
type const *
因此,返回指向 const 类型的指针的成员函数声明如下所示
type const * memberfunction();
用您返回的任何类型替换单词类型。
您返回的内容无法更改,因为它是 const。所以它不能出现在赋值运算符的左侧,即 = ; 并且它不能通过非 const 参数传递给函数或方法,除非你抛弃我一般不推荐的 constsness。