- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C命名空间剖析
本讲基本要求
???? * 掌握:命名空间的作用及定义;如何使用命名空间。???? * 了解:使用早期的函数库?重点、难点???? 命名空间的作用及定义;如何使用命名空间。
????在学习本书前面各章时,读者已经多次看到在程序中用了以下语句:
using namespace std;
????这就是使用了命名空间std。在本讲中将对它作较详细的介绍。
一、 为什么需要命名空间(问题提出)
????命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。
???在C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。
??? 1、全局变量的作用域是整个程序,在同一作用域中不应有两个或多个同名的实体(enuty),包括变量、函数和类等。
例:如果在文件中定义了两个类,在这两个类中可以有同名的函数。在引用时,为了区别,应该加上类名作为限定:???class A?????//声明A类????{?public:???????void funl();//声明A类中的funl函数????private:?????????int i; };???void A::funl()?//定义A类中的funl函数????{…………}????class B?//声明B类????{?public:????????void funl();?//B类中也有funl函数????????void fun2(); };????void B::funl()?//定义B类中的funl函数????{ …………}这样不会发生混淆。
????在文件中可以定义全局变量(global variable),它的作用域是整个程序。如果在文件A中定义了一个变量a ?????? int a=3;在文件B中可以再定义一个变量a?????? int a=5;在分别对文件A和文件B进行编译时不会有问题。但是,如果一个程序包括文件A和文件B,那么在进行连接时,会报告出错,因为在同一个程序中有两个同名的变量,认为是对变量的重复定义。???可以通过extern声明同一程序中的两个文件中的同名变量是同一个变量。如果在文件B中有以下声明:??????extem int a;???表示文件B中的变量a是在其他文件中已定义的变量。由于有此声明,在程序编译和连接后,文件A的变量a的作用域扩展到了文件B。如果在文件B中不再对a赋值,则在文件B中用以下语句输出的是文件A中变量a的值: couta;//得到a的值为3???2、程序中就会出现名字冲突。???在简单的程序设计中,只要人们小心注意,可以争取不发生错误。但是,一个大型的应用软件,往往不是由一个人独立完成的,而是由若干人合作完成的,不同的人分别完成不同的部分,最后组合成一个完整的程序。假如不同的人分别定义了类,放在不同的头文件中,在主文件(包含主函数的文件)需要用这些类时,就用#include命令行将这些头文件包含进来。由于各头文件是由不同的人设计的,有可能在不同的头文件中用了相同的名字来命名所定义的类或函数。
例4 名字冲突
程序员甲在头文件headerl.h中定义了类Student和函数fun。
//例4中的头文件header1(头文件1,没其文件名为cc8-4-h1.h)#include string#include cmathusing namespace std;class Student?//声明Student类?? {?public:???? Student(int n,string nam,int a)?????? {?num=n;name=nam;age=a;}???? void get_data();?? private:???? int num;???? string name;???? int age; };void Student::get_data()?//成员函数定义{ coutnum name ageendl; }double fun(double a,double b)//定义全局函数(即外部函数){ return sqrt(a+b);}
在main函数所在的文件中包含头文件headerl.h:#include iostreamusing namespace std;#include header1.h?//注意要用双引号,因为文件一般是放在用用户目录中的int main(){?? Student stud1(101,Wang,18);?//定义类对象studl?? stud1
您可能关注的文档
- 种鸡的饲养管理.ppt
- 科学三年级下青岛版2.3用太阳计时7.ppt
- 科学五年级上册第一、二单元复习PPT.ppt
- 科博世白色超细羊毛吸声绝热毡介绍.ppt
- 科学中考一轮复习人类与动物的生殖与发育.ppt
- 科学五年级上册《探索土地被侵蚀的因素》教学.ppt
- 科学六年级上青岛版5.5珍稀动植物7.ppt
- 科学哲学学科脉络及其前沿.ppt
- BX51使用手册.doc
- bx八1.2下八年级政治下册_我们享有广泛的权利课件.新建MicrosoftPowerPoint演示文稿剖析.ppt
- 2024《S市夜间餐饮发展现状与完善对策研究(附问卷)》11000字.doc
- 2024《教师参与学校管理的成功经验的调研分析报告》4600字.docx
- 2024《立高食品公司会计岗位的职责设计6200字》.docx
- 2024《抖音直播带货发展中存在的问题及完善对策研究》10000字.doc
- 2024《滁州新天地童装公司应收账款管理问题及对策》15000字.docx
- 2024《劲仔食品公司绩效管理研究6600字》.docx
- 2024《S公司销售人员薪酬方案设计》9300字.docx
- 2024《卡萨帝电子企业存货管理的优化策略》开题报告任务书5300字.docx
- 2024《衡水老白干公司基层员工绩效管理现状、问题和完善对策研究》15000字.docx
- 2024《基于JIT企业存货管理问题及对策研究—以海尔集团为例》12000字.docx
文档评论(0)