我在一个赋值中被要求实现IntList,这是一个动态int数组列表,其中包含“int * p”作为其私有成员。在执行所有方法(添加,查找,删除等)后,我找不到如何执行返回的公共方法:从C++中的int指针返回一个只读指针
- 获取指向基础数组的只读指针。
我怎样才能返回一个指针* p数字,其内容不能改变?
我在一个赋值中被要求实现IntList,这是一个动态int数组列表,其中包含“int * p”作为其私有成员。在执行所有方法(添加,查找,删除等)后,我找不到如何执行返回的公共方法:从C++中的int指针返回一个只读指针
我怎样才能返回一个指针* 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;
}
然后,你可以看到表的内容,但改变它的类之外的值不会可能。
试图取消对最后一行将导致获取此 错误:只读位置分配“* A-> A ::得到()” :)
不要忘记释放A的析构函数中的选项卡,否则会泄漏内存!另外请注意,在A被销毁之后,指向标签的指针将会停顿。这应该就足够了: '〜A(){delete [] tab; }' – Eliot 2013-09-27 04:13:46
您必须在方法签名中使用const
关键字来告诉编译器,返回的内容是常量或不可修改的。既然你要返回一个指针,你还必须弄清楚如何区分“无法修改的指针”和“无法修改的数据指针”,以及如何指定你想。
我想我需要“指向无法修改的数据的指针”,并尝试所有atm,但仍然可以更改方法结果。 – 2013-05-09 00:16:45
你声明一个指针常量类型,像这样
type const *
所以一个成员函数返回一个指向一个const类型的声明看起来像这样
type const * memberfunction();
替换为字类型无论你正在返回什么类型。
你返回的内容不能改变,因为它是const。所以它不能出现在赋值运算符的左侧,即=;它不能通过非常量参数传递给函数或方法,除非抛弃一般我不推荐的常量。
上阅读了' const'关键字 – JustSid 2013-05-09 00:06:42