加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

局部变量,实例变量和类变量的区别(local,instance,static)

(2012-12-20 23:17:54)
标签:

杂谈

分类: QT综合使用
这不是一篇很空泛的理论概念文章,而是有很强的实用性价值。具体的例子参见stanford编程方法handout中的variables。

局部变量local variable是最好理解的概念。他们只存在于创建他们的block里({}之间)无法在block外进行任何操作(不能读取,赋值等等)。

实例变量instance variable的生命周期要长一点。只要它所在的类还活着,他们就活着。
比如在class student中定义了public int ID_NO;在另一个函数中定义了一个新的student class: stu。那么只要stu还在,stu中的ID_NO就存在。
为什么说是实例呢?因为对于不同的实例,同一个实例变量可以是不同的值。比如我们定义两个student class,那么这两个class可以有两个不同的ID_NO;

这对于类变量(我更喜欢称之为静态变量)class variable or static variable来说就不同了。如果你看到student.ID_NO(针对C++而言是student::ID_NO)那么这就肯定是一个静态变量,因为不允许对实例变量这样操作。
另外一点关于静态变量的特殊之处在于静态变量只有一个copy。比如在class A中定义了static int x;
创建两个新的class:A a1; A a2;
再赋值a1.x =5; a2.x =7;
那么现在a1.x=a2.x=7;
静态变量的初始化也很奇特,初始化在类外进行:int A::x = 5;



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有