欢迎来到天天文库
浏览记录
ID:8189874
大小:482.24 KB
页数:9页
时间:2018-03-09
《c+++名称空间与作用域专题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、本文作者:黄邦勇帅学习本文是学习C++最后的主题,因此在学习这篇文章时你应该对C++有一定的基础,因此对于构造和析构函数,模板,类中的各种成员等,都要有一定的熟知度。本文主要集中介绍C++的名称空间,本文首先从把程序放在多个文件中开始,接着介绍链接性和static关键字的关系,然后重点介绍了名称空间的各种情况,本文内容详细易懂。本文内容完全属于个人见解与参考文现的作者无关,其中难免有误解之处,望指出更正。声明:禁止抄袭本文,若需要转载本文请注明转载的网址,或者注明转载自“黄邦勇帅”。主要参考文献:1、C++.Pr
2、imer.Plus.第五版.中文版[美]StephenPrata著孙建春韦强译人民邮电出版社2005年5月2、C++.Primer.Plus.第四版.中文版StanleyB.Lippman、BarbaraE.Moo著李师贤等译人民邮电出版社2006年3月3、C++.Primer.Plus.第三版.中文版StanleyB.Lippman等著潘爱民张丽译中国电力出版社2002年5月4、C++入门经典第三版[美]IvorHorton著李予敏译清华大学出版社2006年1月5、C++参考大全第四版[美]HerbertSch
3、idt著周志荣朱德芳于秀山等译电子工业出版社2003年9月6、21天学通第四版C++[美]JesseLiberty著康博创作室译人民邮电出版社2002年3月第18章名称空间和作用域一、把程序写在多个文件中1、对于大型程序一般将一个程序写在多个文件中:一般把程序分成三部分,头文件和两个源文件,其中头文件包含类的声明或函数的声明。其中一个源文件就包含这些类和函数的定义,而另一个源文件则是主程序。2、将程序放在多个文件中的好处是比如有多个这样的程序需要在头文件中声明的这些函数,则只需在该程序中把这些头文件包含进来。头文
4、件和包含头文件定义的文件就组成了一个软件包,可用于各种程序中。3、通常不应将函数声明和变量声明放在头文件中。因为如果头文件包含一个函数定义,然后在同一程序的其他两个文件中包含了这个头文件,则同一程序中将包含同一函数的两个定义,除非是内联函数,否则就将出错。4、头文件一般包含:函数原型,使用#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数。5、包含头文件时使用#include关见字,在#include后面文件名最好使用双引号不要使用尖括号,比如#include“eee.h”使用双引号和
5、尖括号的区别是使用尖括号时编译器将首先在标准头文件中查找,而使用双引号则首先在当前工作目录或源代码目录查找。6、不能在同一个文件中包含头文件两次。一般不会犯这种错误,但是当使用包含了一个头文件的文件时有可能在不知情的情况下犯这个错误。7、使用预处理器指令#ifndef来解决上面的问题。语名#ifndefhyong…..#endi表示仅当以前没有使用预处理器编译指令#define定义的名称hyong时才处理#ifndef….#endif之间的语句。#define通常创建符号常量,比如#defineH3;把常量3定义
6、为名字H,但只使用#define就能创建名称,比如#defineH;就创建了一个名称H。完整的#ifndef….#endif语句的例子如下:#ifndefHY#defineHYvoidg();#endif;该语句的执行顺序为:编译器首先遇到该头文件时,名称HY没有被定义,这时编译器就将查看#ifndef….#endif之间的内容,并读取到#defineHY这一行。如果在同一文件中遇到包含该头文件的代码时,编译器就知道HY这个名字已经被#define定义了,从而跳过#ifndef….#endif之间的内容。注意这种
7、方法并不能防止头文件被包含两次,而只是让他忽略除第一次包含之外的所有内容。//将程序放在多个文件中的示例://头文件hyong.h的内容如下#ifndefHY//一般在头文件都都使用这种格式以防止头文件在同一文件中被包含两次。语名#ifndefhyong…..#endi表示仅当以前没有使用预处理器编译指令#define定义的名称hyong时才处理#ifndef….#endif之间的语句。#defineHY//在这里用define定义一个名字HY,以便在下次访问到该头文件时,使该名字已经被定义,从而让程序跳过#if
8、ndef….#endif间的语句。voidg();//在头文件中声明一个函数g();#endif//在头文件hy.h中定义函数,一般不允许这样做#includeusingnamespacestd;voidf(){cout<<"f()"<
此文档下载收益归作者所有