黑马程序员技术交流社区
标题:
oc 类属性这里为何是这样?
[打印本页]
作者:
lewisen
时间:
2014-5-7 23:24
标题:
oc 类属性这里为何是这样?
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public
int age;
double weight;
}
-(void)walk;
@end
@implementation Person
-(void)walk
{
NSLog(@"年龄是%d、体重是%.2f的人在散步。",age,weight); //为什么不是p-〉age
}
@end
int main()
{
Person *p = [Person new];
p->age = 30;
p->weight =70;
[p walk];
return 0;
}
复制代码
如上所示,在方法中的两个属性变量为什么不是p->age 和 p->weight,而是不加p呢?求两者区别,谢谢
作者:
葬花桥
时间:
2014-5-8 08:39
本帖最后由 葬花桥 于 2014-5-8 08:43 编辑
咦,我不是回答过这个问题么?
指针p是在main函数是定义的,作用域只在main函数内部,不可能在方法中使用p的,即使你在类中再定义一个指针p,这两个p也不是同一个。
还有p-> age 是访问p指向的对象的age成员,你方法中都没有实例化对象,如何能用这种写法,不知道楼主学的哪门语言可以这样写,反正C++也没这样写
作者:
UT丶
时间:
2014-5-8 12:36
p->是指向对象的 指针是指向方法的
作者:
NenKeer
时间:
2014-5-8 12:42
@implementation Person
-(void)walk
{
NSLog(@"年龄是%d、体重是%.2f的人在散步。",age,weight); //为什么不是p-〉age
//因为在类的实现中,是可以直接访问类的成员变量的,也就是说p调用了这个方法,里面的age和weight就是p对象的.
//而写成p->age的话,因为这个方法里面没有定义p,所以编译会出错。
}
@end
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2