我在赋值中被要求实现IntList,它是动态int数组列表,其中“int * p”作为其私有成员。在实现了所有方法(添加,查找,删除等)后,我无法找到如何实现返回的公共方法:
如何返回带有* p数字的指针,其中的内容无法更改?
答案 0 :(得分:3)
您需要编写与此类似的代码:
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;
}
然后你就可以看到表格的内容,但是不可能在课堂外改变它的价值。
尝试取消注释最后一行将导致获取此内容 错误:指定只读位置'* a-> A :: get()':)
答案 1 :(得分:1)
您必须在方法签名中使用const
关键字来告诉编译器返回的内容是常量或不可修改的。既然你要返回一个指针,那么你还必须弄清楚如何区分“无法修改的指针”和“指向无法修改的数据的指针”,以及如何指定你指向哪一个想。
答案 2 :(得分:0)
你声明一个指向常量类型的指针,如此
type const *
因此,返回指向const类型的指针的成员函数的声明如下所示
type const * memberfunction();
将单词类型替换为您要返回的任何类型。
您返回的内容无法更改,因为它是常量。所以它不能出现在赋值运算符的左侧,即=;并且它不能通过非const参数传递给函数或方法,除非你抛弃我一般不推荐的constsness。