从C ++中的int指针返回一个只读指针

时间:2013-05-09 00:02:53

标签: c++ pointers const

我在赋值中被要求实现IntList,它是动态int数组列表,其中“int * p”作为其私有成员。在实现了所有方法(添加,查找,删除等)后,我无法找到如何实现返回的公共方法:

  • 获取指向底层数组的只读指针。

如何返回带有* p数字的指针,其中的内容无法更改?

3 个答案:

答案 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。