黑马程序员技术交流社区

标题: 关于成员变量 [打印本页]

作者: 曹雨    时间: 2014-7-1 17:41
标题: 关于成员变量
本帖最后由 曹雨 于 2014-7-2 15:05 编辑

如果在main函数中定义一个下划线变量,
1,如果有同名成员变量。会报错还是怎么的,我没有环境测试。。
2,如果没有同名成员变量,仅仅会作为一个普通变量吗?
作者: Littlekin    时间: 2014-7-1 17:59
本帖最后由 Littlekin 于 2014-7-1 18:01 编辑

成员变量是自定义的类里面才有的,main方法是静态方法,是不会有它自己的成员变量的。
作者: 曹雨    时间: 2014-7-1 18:12
本帖最后由 曹雨 于 2014-7-1 18:19 编辑
Littlekin 发表于 2014-7-1 17:59
成员变量是自定义的类里面才有的,main方法是静态方法,是不会有它自己的成员变量的。 ...


main方法的下划线变量就作为一个变量存在了对吗?如果这样的话这个变量和前面类的成员变量同名怎么办
main函数是静态函数,其他一般调用的C函数和oc方法都是动态的对么


作者: Littlekin    时间: 2014-7-1 19:13
曹雨 发表于 2014-7-1 18:12
main方法的下划线变量就作为一个变量存在了对吗?如果这样的话这个变量和前面类的成员变量同名怎么办
mai ...

main方法中的下划线变量是作为一个普通变量存在,至于你说的前面类是怎样的,我没明白你的意思,但如果是在main.m这个文件中引入其他类的话,变量重名这种情况不可能存在,因为如果是引用了一个类的话,那它在main方法中调用的写法是类名->_成员变量(前提该成员变量作用域是public),如果是private修饰的成员变量,那么它在main方法中的调用是利用setter和getter方法调用,写法是[对象名 方法]。如:[stu age];相当于调用Student类的getter方法获得_age这个私有的成员变量。
作者: 奋斗2014    时间: 2014-7-1 19:28
首先关于你的问题,成员变量是类的变量是全局的,而main方法中的变量是局部的只对主函数内部有权限。有同名变量肯定会报错的,如果没有同名变量那就是一个普通的局部变量。
作者: 曹雨    时间: 2014-7-2 15:04
Littlekin 发表于 2014-7-1 19:13
main方法中的下划线变量是作为一个普通变量存在,至于你说的前面类是怎样的,我没明白你的意思,但如果是 ...

谢谢 你{:3_59:}
作者: 曹雨    时间: 2014-7-2 15:05
奋斗2014 发表于 2014-7-1 19:28
首先关于你的问题,成员变量是类的变量是全局的,而main方法中的变量是局部的只对主函数内部有权限。有同名 ...

- (void)test
{
        int _age = 20;//此处的_age 是局部变量还是成员变量?
        NSLog(@"Person的年龄是%d岁",_age);//输出20,没必要大老远去访问成员变量,就近原则。
       
}

解答:
成员变量和局部变量同名
当成员变量和局部变量同名时,采取就近原则,访问的是局部变量
用self访问成员变量,区分同名的局部变量


不一定会报错吧,我今天看到后面的视频了,老师这么说的
作者: 奋斗2014    时间: 2014-7-2 19:12
曹雨 发表于 2014-7-2 15:05
- (void)test
{
        int _age = 20;//此处的_age 是局部变量还是成员变量?

这样说的话,好像是可以!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2