9.程序组织和编译预处理.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 程序组织和编译预处理 9.1 作用域和可见性 9.2 内存区和存储类型 9.3 编译预处理 9.4 名称空间 9.4 名称空间 在C++中,名称可以是变量、函数、结构、枚举、联合及类的名字等。 随着程序代码的增多,名称相互冲突的可能性也将增加。 解决名称空间问题的方法是使用C++新的名称空间特性,通过名称空间的作用域机制来解决。 1. 名称空间的定义 同一个文件中,允许定义多个名称空间。一旦定义名称空间,标识符就标识了名称空间体的那个区域。 名称空间中的函数、类等称为成员函数和成员类。成员函数的原型必须在名称空间体中声明,而此时的函数定义称为函数的实现,它可以在体内完成,也可在体外完成。 namespace [标识符] { 成员; … } 体 2. 名称空间的使用 (1)直接引用方式。 名称空间名::成员 [例Ex_Namespace] 直接引用名称空间的成员 #include iostream #include cstring using namespace std; namespace DING { char name[] = this is in DING region!; void showname(void) { coutnameendl; } } int main() { strcpy(DING::name, 直接引用DING成员!); DING::showname(); return 0; } 2. 名称空间的使用 (1)直接引用方式。 (2)using个别成员。这种方式称为名称空间成员的使用声明方式 名称空间名::成员 using 名称空间名M::成员N [例Ex_Using1] 名称空间的成员使用声明 #include iostream #include cstring using namespace std; namespace DING { char name[] = this is in DING region!; void showname(void) { coutnameendl; } } int main() { using DING::name; using DING::showname; strcpy(name, 名称空间的成员使用声明!); showname(); return 0; } 2. 名称空间的使用 (1)直接引用方式。 (2)using个别成员。这种方式称为名称空间成员的使用声明方式 (3) using全部成员。这种方式称为名称空间的编译方式 名称空间名::成员 using 名称空间名M::成员N using namespace 名称空间名; 第9章 程序组织和编译预处理 第9章 程序组织和编译预处理 9.1 作用域和可见性 9.2 内存区和存储类型 9.3 编译预处理 9.4 名称空间 9.1 作用域和可见性 作用域又称作用范围,是指程序中标识符(变量名、函数名、数组名、类名、对象名等)的有效范围。 一个标识符是否可以被引用,称为标识符的可见性。在一个C++程序中,一个标识符只能在声明或定义它的范围内可见,在此之外是不可见的。 标识符的作用域分为5种:函数原型作用域、函数作用域、块作用域、类作用域和文件作用域。 9.1.1 函数原型作用域 函数原型作用域指声明函数原型时所指定的参数标识符的作用范围。该作用范围在函数原型声明中的左、右圆括号之间。 可以与函数定义中说明的标识符名称不同 可以省略 int x ; int sum( int x , int y ) ; y = 100 ; int main() { ... } int sum( int a, int b ) { } // error 9.1.2 函数作用域 具有函数作用域的标识符在声明它的函数内可见,但在此函数之外是不可见的。 在C++中,只有goto语句使用的标号是唯一具有函数作用域的标识符。 标号可以先使用后声明。 goto语句不能跨函数跳转。 void fun(void) { int a, sum=0; START: cina; if (0==a) goto END; else { sum+=a; goto START; } END: coutsumendl; } 9.1.3 块作用域 在块(语句)中声明的标识符,其作用域从声明处开始,直到结束块的花括号为止。 块作用域也称局部作用域,具有块作用域的变量是局部变量。 注意:当标识符的作用域完全相同时,不允许出现相

文档评论(0)

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

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

1亿VIP精品文档

相关文档