哈理工C++课件cpp7.ppt

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

静态生存期 【例7.20】外部变量的定义与声明。 // 7-20(1).cpp #includeiostream using namespace std; void fun(); // 函数声明 extern double gLength, gWidth, gPerim, gArea; // 声明外部变量,文件内扩展 int main() { gLength=5; gWidth= 6; fun(); cout 周长= gPerim ,面积= gArea endl; return 0; } double gLength, gWidth, gPerim, gArea; // 定义外部变量 静态生存期 // 7-20(2).cpp extern double gLength, gWidth, gPerim, gArea; // 声明外部变量,扩展到其他文件 void fun() { gPerim = 2 * (gLength + gWidth); gArea = gLength * gWidth; } 静态生存期 (3)静态全局变量 在全局变量的定义前加上static存储类别的声明就构成了静态全局变量,也称为静态外部变量。静态全局变量的存储方式和生存期与外部变量相同。两者不同之处在于作用域的扩展上。静态全局变量只能在文件内扩展,不能扩展到其他文件。例如: 在file1.cpp中定义的静态全局变量,只能在文件内扩展: extern int x; // 可以在文件内扩展 … static int x; // 静态全局变量 在file2.cpp中,就不能声明外部变量: extern int x; // 编译能通过,连接时出错 内部函数与外部函数 C++中所有的函数是平行定义的,函数的本质是外部的。这些函数分散在多个文件中,可以根据函数是否允许在多个文件中使用,将函数分为内部函数和外部函数,分别用static和extern来定义和声明。 1. 内部函数 内部函数又称静态函数,只能在定义它的文件中被调用,而不能被其他文件中的函数所调用。在函数定义前面使用static关键字,内部函数定义形式为: static 类型标识符 函数名(形参表){…} 例如: static int fun_a(int x,int y) { ; } 函数fun_a(),只能被它所在文件中函数调用,保证了函数的独立性。对于外部变量也可以使用static来定义,例如 内部函数与外部函数 static double fun_sum(double ,int); static int a; void main() { ; } 通常把只能在一个文件中使用的函数和外部变量放在一个文件中,在它们前面的冠以static,其他文件不能引用。这种功能使模块化函数设计更方便、更具有通用性。 2. 外部函数 C++中函数属性默认为外部的,因此外部函数说明时,通常省略标识符extern。 名字空间 本书的前几章,一直沿用C语言的传统用法,例如主函数为void类型,无返回值;头文件带后缀.h;使用系统库时不使用命名空间等。但是,ANSI C++标准在一些方面有新的规定,例如要求主函数为int类型,如果程序正常执行则返回0值;系统头文件不带后缀.h;使用系统库时使用命名空间std(standard的缩写)等。 对于最初的C++版本来说,没有名字空间(Namespace)的概念,I/O库由头文件iostream.h支持。这种方法在某些情况下是有问题的,其原因是当头文件iostream.h包含在一个程序中时,该头文件中的全局标识符也就变成了程序中的全局标识符。此时,如果程序员不小心使用了一个与该标识符相同的变量名,就必然会导致出现错误。另外,如果程序中使用到第三方的库,也容易产生同样的问题。 名字空间 为了解决这一问题,在新的ANSI/ISO标准中引入了名字空间,使程序的设计者可以根据需要指定一些名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其它全局实体分隔开来,保证了不同名字空间的同名标识符不发生冲突。 std是标准C++指定的一个名字空间,标准C++在此名字空间中定义了其标准库的标识符。使用名字空间std成员的方法有两种,一种是像本章的程序一样,在源文件中使用using namespace语句;另一种是在标识符前加上名字空间名及作用域运算符“::”。例如: #includeiostream int main() { std::cout程序设计就这么简单!std::endl; return 0; } 名字空间 除了使用标准C++指定的名字空间外,还可以自己定义名字空间,下面是定义名空间的例子。 namespace MyNS1 // 指

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档