C++ 从C+中的int指针返回只读指针+;
我在一个作业中被要求实现IntList,这是一个动态int数组列表,它的私有成员是“int*p”。在实现所有方法(添加、查找、删除等)后,我无法找到如何实现公共方法返回:C++ 从C+中的int指针返回只读指针+;,c++,pointers,constants,C++,Pointers,Constants,我在一个作业中被要求实现IntList,这是一个动态int数组列表,它的私有成员是“int*p”。在实现所有方法(添加、查找、删除等)后,我无法找到如何实现公共方法返回: 获取指向基础数组的只读指针 如果指针的内容不能更改,如何返回带有*p数字的指针?您必须在方法签名中使用const关键字来告诉编译器返回的内容是常量或不可修改的。因为您返回的是指针,所以您还必须弄清楚如何区分“无法修改的指针”和“无法修改的数据指针”,以及如何指定所需的值。您必须在方法签名中使用const关键字来告诉编译器返
- 获取指向基础数组的只读指针
如果指针的内容不能更改,如何返回带有*p数字的指针?您必须在方法签名中使用
const
关键字来告诉编译器返回的内容是常量或不可修改的。因为您返回的是指针,所以您还必须弄清楚如何区分“无法修改的指针”和“无法修改的数据指针”,以及如何指定所需的值。您必须在方法签名中使用const
关键字来告诉编译器返回的是常量或不可修改的。由于要返回指针,您还必须弄清楚如何区分“无法修改的指针”和“指向无法修改的数据的指针”,以及如何指定所需的指针。您声明了指向常量类型的指针,如下所示
type const *
因此,返回指向常量类型指针的成员函数的声明如下所示
type const * memberfunction();
用返回的任何类型替换单词type
返回的内容不能更改,因为它是常量。因此它不能出现在赋值运算符的左侧,即=;它不能通过非常量参数传递到函数或方法中,除非你抛弃了常量,我一般不建议这样做。你声明了一个指向常量类型的指针,就像这样
type const *
因此,返回指向常量类型指针的成员函数的声明如下所示
type const * memberfunction();
用返回的任何类型替换单词type
返回的内容不能更改,因为它是常量。因此它不能出现在赋值运算符的左侧,即=;而且它不能通过非常量参数传递到函数或方法中,除非您抛弃了我通常不推荐的常量。您需要编写与此类似的代码:
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()”:)
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()”:)
const
关键字阅读const
关键字我想我需要“指向无法修改的数据的指针”,并尝试所有操作,但仍然可以更改方法结果。我想我需要“指向无法修改的数据的指针”,尝试所有的atm,但我仍然可以改变方法的结果。别忘了释放A的析构函数中的标签,否则你会泄漏内存!还要注意的是,一个标签被销毁后,指向该标签的指针将悬空。这就足够了:~A(){delete[]tab;}
不要忘记释放A的析构函数中的tab,否则会泄漏内存!还要注意的是,一个标签被销毁后,指向该标签的指针将悬空。这就足够了:~A(){delete[]tab;}