Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230278
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: C/C++

2008-09-19 17:09:58

static的最基本含义是“位置不变的某个东西”,在程序设计语言中则指内存中的物理位置或文件中的可见性。
在c和c++中,static通常有两种基本的含义:
1)在固定的地址上分配,也就是说对象是在一个特殊的静态数据区上创建的,而不是每次函数调用时在堆栈上产生的,这就是静态存储的概念。
2)对一个特定的编译单位来说是本地的,这里的static控制名字的可见性,所以这个名字在这个单元或类之外是不可见的。这也描述了连接的概念,它决定连接器将看到哪些名字。
 
1.函数中的static

  静态存储的概念。
  如果没有为一个预定义类型的static变量提供初值的话,编译器会确保在程序开始时它被初始化为“0”
  而对于用户自定义的静态对象则需要使用构造函数来初始化,当程序从main块退出时执行析构函数。
  全局静态对象的初始化是在main前进行的,所以有了一个在main前执行一段代码的简单的,可执行的方法。
 
2.控制连接

  在文件范围内,一个被声明为static的变量或者函数名字对编译单元(.cpp)来说是局部变量。
  文件范围内的变量都是静态存储的,这是的static用来约束可见性:
     static int i;//局部可见
     extern int i;(int i;)//全局可见
  对于函数static和extern也是用来约束可见性的。
 
3.类中的static

  类中的static变量是静态存储的概念,所有的对象共用这一个变量。类中只能对非const成员做声明,定义必须在外面进行。。
  静态成员函数:它为类的全体服务而不是为类的一部分对象服务,静态成员函数不能访问一般成员,它只能访问静态成员,也只能调用其它静态成员函数。
 
阅读(629) | 评论(0) | 转发(0) |
0

上一篇:称小球

下一篇:[c++] 引用和copy构造函数

给主人留下些什么吧!~~