中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
thinking in c++ 之static小结
作者:未知 时间:2005-09-13 23:28 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:thinking in c++ 之static小结
static最基本的含义是:“位置不变的某个东西“,这里指的是内存中的位置或者文件中的可见性

1,在c和c++中,static的两种含义:
(1),静态存储。
(2),对一个特定的编译单元来说是本地的,这个名字在这个单元或类之外不可见。

2,static对象将存储在程序的静态存储区中,而不是在堆栈中。这个对象只在汉书第一次调用是初始化,其后不用再初始化。

3,对于静态对象的初始化,零赋值只对预定义对象有效,用户自定义的类型必须用构造函数初始化。

4,静态对象的析构函数在程序的main()函数退出时,或者标准c函数exit()调用时才被调用。在析构函数中调用exit()是很危险的,因为这样可能引起死循环。

5,静态对象的销毁是按它们初始化的相反顺序进行的。全局对象总是在main()执行之前被创建。如果一个包含静态对象的函数从没有被调用过,那么这个对象的构造函数就没有被执行,所以也就不会调用析构函数

6,一个被明确声明为static的对象或函数的名字对编译单元来说是局部变量,这些名字有内部连接。类声明和局部变量没有联接。

7,extern表示该名字对所有的编译单元是可见的,用static和extern限定的对象总是驻留在静态数据区

8,普通函数是外部连接的

9,类的静态成员拥有一块单独的存储区,而不管我们创建了多少个该类的对象,这就为这些了创建了一个通信的方法。

10,静态成员的定义必须出现在外部,而且只能有一次

11,一个类的静态常量可以被用作一个编译时常量

12,在局部类(在函数内部定义的类)中不能有静态数据成员。

13,静态成元函数:
(1),静态成元函数为该类的全体服务,而不是为类的部分对象服务;
(2),静态成员函数不能访问一般的数据成员,只能访问静态数据成员,并且只能调用静态成元函数。

14,为什么静态成元函数不能访问一般的数据成员,也不能调用普通的成员函数?
由于当前对象的地址是被隐藏的传递给被调用的函数的,由于静态成员函数不是某个对象独有的,所以没有this指针,所以无法调用调用普通成员函数,同样对普通成员变量的访问也用到了this指针。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有