《C++程序设计语言》第五讲程序结构.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C++程序设计语言》第五讲程序结构.ppt

第一节 作用域与可见性 第二节 生存期 第三节 局部变量和全局变量 第四节 静态成员 第五节 友元 第六节 常类型 第七节 多文件结构 第八节 编译预处理 §5-1 标识符的作用域 1.作用域 在C++语言中,作用域是对标识符而言的. 块:函数中用花括号“{”和“}”括住的一块区域,一个块内允许嵌套另一个块,在语法上,块可当作单语句使用.在一个块内说明的标识符具有块作用域,它从标识符被说明的地方开始,到标志该块结束的右花括号处结束. 参看教材p122例子,通过该例,可以看到: (1)在嵌套块中同名变量的使用:内层块变量屏蔽了外层的同名变量,破坏了标识符作用域与可见性的一致性。 (2)?C++语言的声明语句可放在程序中的任何位置,但都遵循“先声明,後使用”的原则。 为了解决(1)中的问题,当内外层出现同名变量时,采用::(作用域运算符)来访问外层的同名变量。(参看p95例程) §5-2 变量的生存期 1.变量的生存期 由于变量必须分配内存单元(或寄存器),所以变量就有存活时间的问题。变量的生存期就是指“在程序运行过程中变量实际占有内存或寄存器的时间”。通俗地讲,当某个变量占有内存单元(或寄存器)时,就说它是“活着”;当变量占有的内存单元(或寄存器)被收回时,就说它是“死了”。 变量的生存期是由声明变量时选择的存储类别决定的,存储类别也影响着编译程序为变量分配内存的方式以及为变量设置的初始值。 2.C++程序中的存储组织 一个C++程序可以使用的存储空间可分为三部分:如下图示: 3.变量的存储类型 变量的存储类型有四种:auto、static、register、extern 寄存器与内存的区别。 §5-3 全局变量和局部变量 ?变量标识符的说明可放在程序中的任何位置。在文件作用域中声明的变量成为“全局变量”,在块作用域中声明的变量称为“局部变量”。如下图示: 5-4 静态成员 C++有一种数据成员,称作“静态”成员,静态成员有静态数据成员和静态函数成员之分。 静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一节里,我们主要讲述类的静态成员来实现数据的共享。 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。 1 静态数据成员 说明静态数据成员的语句格式是: static 类型说明符 成员名; 【例】 报名登记处登记每一位来访者的姓名,同时使用静态数据成员account自动产生一个流水号数,记入number中。 # include iostream.h //定义类married class married {private: int number; //编号 char *name; //姓名 public: static int glob; // 定义静态数据成员glob void set_mes (char *a); // set_mes函数说明 } ; 几点说明 不管一个类的对象有多少个,其静态数据成员也只有一个,由这些对象所共享,可被任何一个对象所访问。 在一个类的对象空间内,不包含静态成员的空间,所以静态成员所占空间不会随着对象的产生而分配,或随着对象的消失而回收。 静态数据成员的存储空间的分配是在程序一开始运行时就被分配。并不是在程序运行过程中在某一函数内分配空间和初始化。 静态数据成员的赋值语句,既不属于任何类,也不属于包括主函数在内的任何函数,静态变量赋初值语句应当写在程序的全局区域中,并且必须指明其数据类型与所属的类名,并用如下格式: 类型 类名::变量名=值; 对于在类的public部分说明的静态数据成员,可以不使用成员函数而直接访问,即使未定义类的对象,同样也可以直接访问,但在使用时也必须用类名指明所属的类,如在上例中的glob数据成员,可以在main函数体中直接访问,coutvisited::glob;而private和protected部分的静态成员只能通过类的成员函数访问。 下面参看教材p130例子5-5,说明静态数据成员的应用: 2 静态成员函数

文档评论(0)

wuyouwulu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档