C++面向对象程序设计项目教程(项目七).pptVIP

C++面向对象程序设计项目教程(项目七).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

工程七;任务一学习命名空间的使用;任务说明;一个大型的应用软件通常是由多人合作完成的,每人只负责完成程序的一局部。假设不同的人分别在各自的头文件中定义了需要的类和函数,当主文件用到这些类和函数时,就将这些头文件包含进来。由于这些头文件由不同的人所设计,那么有可能导致在不同的头文件中定义了名字相同但实现功能不同的两个类或函数,例如下页图所示的情况,Student类和fun()函数就出现了名字冲突。;为了解决以上这些问题,C++中提出了命名空间的概念。;预备知识;一、命名空间的定义;例如:;命名空间A的成员包括变量i、类A和函数fun,它们仍是全局变量,只是被放在命名空间ns1中。其中,可以在命名空间的定义内定义成员,也可以只在命名空间的定义内声明成员,需要注意的是,在命名空间外定义成员时,一定要通过作用域限定符指出该成员是属于哪个命名空间的。;【例7-1】定义命名空间的应用举例。;voidData::getdata()

{coutdata1:a,data2:bendl;}

doublefun(doublex,doubley) //在命名空间ns1内定义函数fun

{return(x+y)/2;}

namespaceInner //在命名空间ns1内定义自命名空间Inner

{voidf()

{i++;}

voidh();

}

}

voidns1::Inner::h() //在命名空间Inner外定义函数h()

{i--;};//7-1-2.h〔头文件〕

namespacens2 //声明命名空间ns2

{inti; //定义命名空间ns2的成员i

classData //在命名空间ns2内定义Data类

{public:

Data(intx,inty,intz)

{a=x;b=y;c=z;}

voidgetdata();

private:

inta;intb;intc;

};

voidData::getdata()

{coutdata1:a,data2:b,data3:cendl;}

doublefun(doublex,doubley) //在命名空间ns2内定义函数fun

{return(x-y)/2;}};//7-1.cpp

#includeiostream.h

#include7-1-1.h //包含头文件7-1-1.h

#include7-1-2.h //包含头文件7-1-2.h

voidmain()

{ns1::i=10; //引用命名空间ns1中的变量i

ns1::Datad1(3,4); //用命名空间ns1中定义的Data类定义d1

d1.getdata();

coutns1::fun(5.5,3.3)=ns1::fun(5.5,3.3)endl;

//调用命名空间ns1中的fun()

coutns1::i=ns1::iendl; //调用命名空间ns1中的i

ns1::Inner::f(); //调用子命名空间Inner中的f()

coutns1::i=ns1::iendl;

ns1::Inner::h(); //调用子命名空间Inner中的h()

coutns1::i=ns1::iendl;

ns2::i=20; //引用命名空间ns2中的变量i

ns2::Datad2(3,4,5); //用命名空间ns2中定义的Data类定义d2

d2.getdata();

coutns2::fun(5.5,3.3)=ns2::fun(5.5,3.3)endl;

//调用命名空间ns2中的fun()

coutns2::i=ns2::iendl; //调用命名空间ns2中的i

};测试数据与运行结果:;二、命名空间成员的引用;使用命名空间别名的一般形式为:;另外,还可以使用using来简化对命名空间名的使用。使用using声明命名空间成员的格式为:;在上述语句中,进行了using声明后,其后程序中出现的i都指的是ns1::i。显然,使用using声明省去了每次引用命名空间成员时都用命名空间名限定。;usingnamespacens1;

i=1; //相当于ns1::i=1

i++;

coutiendl;

coutfun()endl; //这里的fun()相当于ns1::fun();为此,通常在文件开头使用usingnamespace语句对命名空间std进行声明,这样,在std中定义和声明的所有标识符在该文件中都可以作为全局标识符直接使用。如:;无名命名空间的成员fun函数的

文档评论(0)

147****4268 + 关注
实名认证
文档贡献者

认真 负责 是我的态度

1亿VIP精品文档

相关文档