gpt4 book ai didi

objective-c - 在指向对象的指针之前,const 说明符有什么作用?

转载 作者:行者123 更新时间:2023-12-04 05:21:24 25 4
gpt4 key购买 nike

如果我有这样的 C 字符串:

const char* str= "hello";

我很清楚我不能改变字符串的任何字符,因为指针是常量。
但如果我有这个:
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

我仍然可以使用它的方法来改变对象状态。
如果指针指向 NSMutableString,我仍然可以改变它。
那么 const 代表什么?

最佳答案

在该方法声明中,location是指向常量 CLLocation 的指针.但是当你给location发消息的时候对象,const -ness 不被保留;处理消息的方法见self作为非 const对象。 (请注意,这与 C++ 不同,C++ 支持 const 成员函数,其中 this 是指向常量对象的指针。)

所以const在那个声明中并不是特别有用。也许它是由习惯了 C++ 做事方式的人编写的。

当你看到 const在 Objective-C 中附加到一个对象指针,它通常是这样的:

extern NSString * const SomeConstantString;

这声明 SomeConstantString作为指向某个非常量对象(在本例中为 NSString )的常量指针。指针本身是常数,所以你的程序不能改变 SomeConstantString指向其他一些 NSString对象。

关于objective-c - 在指向对象的指针之前,const 说明符有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com