📄 标准名字空间的理解 - 交大蓝盾 blog - powered by phpwind_net.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0063)http://www.ecjtu.org/blog/article.php?itemid-447-type-blog.html -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind.net</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind_net.files/style.css"
type=text/css rel=stylesheet><LINK
href="标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind_net.files/q.css" type=text/css
rel=stylesheet>
<SCRIPT language=JavaScript
src="标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind_net.files/global.js"></SCRIPT>
<SCRIPT language=JavaScript
src="标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind_net.files/pw_ajax.js"></SCRIPT>
<SCRIPT language=JavaScript
src="标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind_net.files/function.js"></SCRIPT>
<SCRIPT language=JavaScript>var ajxurl='http://www.ecjtu.org/blog';</SCRIPT>
<META content="MSHTML 6.00.2900.3059" name=GENERATOR></HEAD>
<BODY>
<DIV id=header><A
style="DISPLAY: block; FLOAT: left; WIDTH: 200px; HEIGHT: 48px"
href="http://www.ecjtu.org/blog"></A>
<DIV id=tool><A href="http://www.ecjtu.org/blog/index.php">首 页</A> |
<A href="http://www.ecjtu.org/blog/index.php?action-team.html">朋友圈</A>
| <A href="http://www.ecjtu.org/blog/member.php">同城博客</A> |
<A href="http://www.ecjtu.org/blog/search.php">搜 索</A> | <A
href="http://www.ecjtu.org/blog/faq.php">帮 助</A> | </DIV>
<DIV class=c></DIV>
<DIV id=guide>
<UL>
<LI><A href="http://www.ecjtu.org/blog/cate.php?cid-2.html">电脑技术</A> </LI>
<LI><A href="http://www.ecjtu.org/blog/cate.php?cid-3.html">生活人生</A> </LI>
<LI><A href="http://www.ecjtu.org/blog/cate.php?cid-4.html">经济管理</A> </LI>
<LI><A href="http://www.ecjtu.org/blog/cate.php?cid-5.html">时尚动态</A> </LI>
<LI><A href="http://www.ecjtu.org/blog/cate.php?cid-6.html">舞文弄墨</A> </LI>
<LI><A href="http://www.ecjtu.org/blog/cate.php?cid-7.html">情感天地</A>
</LI></UL></DIV>
<DIV class=c></DIV>
<DIV style="HEIGHT: 31px">
<DIV id=sc>
<FORM id=schf action=search.php method=post><INPUT type=hidden value=2
name=step>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD style="WIDTH: 167px"><INPUT id=sip name=keyword></TD>
<TD style="WIDTH: 29px; TEXT-ALIGN: left"><A id=sbt
onclick="GE('schf').submit();"
href="http://www.ecjtu.org/blog/article.php?itemid-447-type-blog.html#"></A></TD></TR></TBODY></TABLE></FORM></DIV>
<DIV id=login style="FLOAT: left">
<FORM action=login.php? method=post><INPUT type=hidden value=2 name=step> <INPUT
type=hidden value=http://www.ecjtu.org/blog name=jumpurl> <INPUT type=hidden
value=31536000 name=cktime> <B>用户名:</B> <INPUT class=input name=pwuser>
<B> 密码:</B> <INPUT class=input type=password name=pwpwd> <INPUT class=btn type=submit value="登 录" name=submit> <A class=a2
href="http://www.ecjtu.org/blog/register.php">新用户注册</A> </FORM></DIV>
<DIV class=c></DIV></DIV></DIV>
<DIV id=main style="BACKGROUND: url(image/default/mainbg2.png)">
<DIV id=mainav style="BACKGROUND: none transparent scroll repeat 0% 0%">
<DIV class=c></DIV>
<DIV style="MARGIN: 0px auto; WIDTH: 96%">
<DIV id=digg>
<H3> <A href="http://www.ecjtu.org/blog/index.php">交大蓝盾 BLOG</A> » <A
href="http://www.ecjtu.org/blog/cate.php?cid-2.html">电脑技术</A> » <A
href="http://www.ecjtu.org/blog/cate.php?cid-8.html">编程破解</A> </H3>
<DIV class=c style="HEIGHT: 15px"></DIV>
<DIV class=diggone>
<DIV class=diggc><A class=ico
href="http://www.ecjtu.org/blog/blog.php?uid-162.html"><IMG
src="标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind_net.files/162_VTz7micW9hIZKVY.gif"></A>
<!--*******************************标题部分开始***************************************-->
<H2>标准名字空间的理解<BR><SPAN> 作者: <A class=aa3
href="http://www.ecjtu.org/blog/blog.php?uid-162.html">左心房的痛</A> 发表日期:
2007-01-06</A> <IMG height=17
src="标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind_net.files/copy.png" width=16
align=absBottom> <A title=http://www.ecjtu.org/blog/article.php?itemid=447
onclick="clipboardData.setData('Text','http://www.ecjtu.org/blog/article.php?itemid=447&type=blog')"
href="javascript:">复制链接</A> <IMG height=17
src="标准名字空间的理解 - 交大蓝盾 BLOG - powered by phpwind_net.files/addto.gif" width=16
align=absBottom> <A title=加入书签 style="CURSOR: pointer"
onclick="addtoclt(447,'news');">收藏</A><A id=commendtomenu
style="MARGIN-LEFT: 20px"><INPUT class=btn onclick=commendtomenu(); type=button value=推荐好友></A></SPAN></H2>
<SCRIPT language=JavaScript> itemid=447; </SCRIPT>
<!--*******************************标题部分结束/文章内容开始***************************************-->
<DIV class=a_text> 一、标准名字空间的理解: <SPAN class=copyctrl
style="FONT-SIZE: 0pt">V!U> .|[ </SPAN> <BR><SPAN class=copyctrl
style="FONT-SIZE: 0pt">K-4Z|ys </SPAN> <BR>using namespace
std;就是标准名字空间的引用,std是C++标准库中的名字空间名称。大家都知道,当我们定义了一个类,而声明对象的时候就要用到 class_name
后跟对象名称,标准名字空间也是这个用法。 <SPAN class=copyctrl style="FONT-SIZE: 0pt">JsbCq7c
</SPAN> <BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">j*Q +"h/
</SPAN> <BR>其实,我们可以按照一个更为抽象包含更广的类来理解标准名字空间。#include<iostream>中的iostream正是包含在这个标准名字空间里面的一个“对象”。
<SPAN class=copyctrl style="FONT-SIZE: 0pt">,q6[Yh : </SPAN> <BR><SPAN
class=copyctrl style="FONT-SIZE: 0pt">Ls8Si!&\
</SPAN> <BR>namespace是为了解决C++中的名字冲突而引入的。什么是名字冲突呢?比如,在文件x.h中有个类MyClass,
在文件y.h中也有个类MyClass,而在文件z.cpp中要同时引用x.h和y.h文件。显然,按通常的方法是行不能的,那怎么办呢?引入 namespace即可。
<SPAN class=copyctrl style="FONT-SIZE: 0pt">z!GVg"*/1 </SPAN> <BR><SPAN
class=copyctrl style="FONT-SIZE: 0pt">}+,fFzX(5 </SPAN> <BR>标准名字空间的用法:
<SPAN class=copyctrl style="FONT-SIZE: 0pt">#zT5 3UvK </SPAN> <BR><SPAN
class=copyctrl style="FONT-SIZE: 0pt">Y ;D*Cl
</SPAN> <BR>我们完全可以定义自己的标准名字空间,如下例: <SPAN class=copyctrl
style="FONT-SIZE: 0pt">N7tezs13`v </SPAN> <BR><SPAN class=copyctrl
style="FONT-SIZE: 0pt">%UsJpIH </SPAN> <BR>在x.h中的内容为 <SPAN
class=copyctrl style="FONT-SIZE: 0pt">YZ:7<ly!! </SPAN> <BR>// x.h
<SPAN class=copyctrl style="FONT-SIZE: 0pt">+SLTis{%{9
</SPAN> <BR>namespace MyNamespace1 <SPAN class=copyctrl
style="FONT-SIZE: 0pt">U$ A 2 </SPAN> <BR>{ <SPAN class=copyctrl
style="FONT-SIZE: 0pt">CYM&o;e </SPAN> <BR>class MyClass <SPAN
class=copyctrl style="FONT-SIZE: 0pt">Gjl)vq>uw </SPAN> <BR>{ <SPAN
class=copyctrl style="FONT-SIZE: 0pt">2eMVU=_ </SPAN> <BR>public: <SPAN
class=copyctrl style="FONT-SIZE: 0pt">}F:npOF/o </SPAN> <BR>void f();
<SPAN class=copyctrl style="FONT-SIZE: 0pt">D)'J(s </SPAN> <BR>private:
<SPAN class=copyctrl style="FONT-SIZE: 0pt">x1-MG~> Q </SPAN> <BR>int
m; <SPAN class=copyctrl style="FONT-SIZE: 0pt">m m?'>/jt </SPAN> <BR>};
<SPAN class=copyctrl style="FONT-SIZE: 0pt">6P>.%wjC0 </SPAN> <BR>};
<SPAN class=copyctrl style="FONT-SIZE: 0pt">+LK+t BZ3 </SPAN> <BR><SPAN
class=copyctrl style="FONT-SIZE: 0pt">/q=oet}\4~ </SPAN> <BR>在y.h中的内容为
<SPAN class=copyctrl style="FONT-SIZE: 0pt">V.)TXUW </SPAN> <BR>// y.h
<SPAN class=copyctrl style="FONT-SIZE: 0pt">?8O[1zO"
</SPAN> <BR>namespace MyNamespace2 <SPAN class=copyctrl
style="FONT-SIZE: 0pt">HjT'yy(b </SPAN> <BR>{ <SPAN class=copyctrl
style="FONT-SIZE: 0pt">LF}(q`g. </SPAN> <BR>class MyClass <SPAN
class=copyctrl style="FONT-SIZE: 0pt">6zfAyL </SPAN> <BR>{ <SPAN
class=copyctrl style="FONT-SIZE: 0pt">,-}49Mv0 </SPAN> <BR>public: <SPAN
class=copyctrl style="FONT-SIZE: 0pt">gEljQ </SPAN> <BR>void f();
<SPAN class=copyctrl style="FONT-SIZE: 0pt">wkE&Dxi"
</SPAN> <BR>private: <SPAN class=copyctrl style="FONT-SIZE: 0pt">NgC4`x
</SPAN> <BR>int m; <SPAN class=copyctrl style="FONT-SIZE: 0pt">-x, ?_Mui
</SPAN> <BR>} ; <SPAN class=copyctrl style="FONT-SIZE: 0pt">!Rng`"<H
</SPAN> <BR>}; <SPAN class=copyctrl style="FONT-SIZE: 0pt">1 a[v@cs45
</SPAN> <BR>然后在z.cpp中引入x.h和y.h <SPAN class=copyctrl
style="FONT-SIZE: 0pt">71<~&%!. </SPAN> <BR>// z.cpp <SPAN
class=copyctrl style="FONT-SIZE: 0pt">qA&P{<R
</SPAN> <BR>#include "x.h" <SPAN class=copyctrl
style="FONT-SIZE: 0pt">s^zTH x </SPAN> <BR>#include "y.h" <SPAN
class=copyctrl style="FONT-SIZE: 0pt">z9XWV^_ </SPAN> <BR>using
namespace MyNamespace1; <SPAN class=copyctrl style="FONT-SIZE: 0pt">e fVc.Hbq
</SPAN> <BR>using namespace MyNamespace2; <SPAN class=copyctrl
style="FONT-SIZE: 0pt">28=I/,{ </SPAN> <BR><SPAN class=copyctrl
style="FONT-SIZE: 0pt">"8@* bv </SPAN> <BR>void main() <SPAN
class=copyctrl style="FONT-SIZE: 0pt">ID+!X+^b </SPAN> <BR>{ <SPAN
class=copyctrl style="FONT-SIZE: 0pt">zZ cMp{
</SPAN> <BR>//声明一个文件x.h中类MyClass的实例x <SPAN class=copyctrl
style="FONT-SIZE: 0pt">>U<H+9>
</SPAN> <BR>MyNamespace1::MyClass x; <SPAN class=copyctrl
style="FONT-SIZE: 0pt">.&>NYF
</SPAN> <BR>//声明一个文件x.h中类MyClass的实例x <SPAN class=copyctrl
style="FONT-SIZE: 0pt">"%[OR6H^ </SPAN> <BR>MyNamespace2::MyClass y;
<SPAN class=copyctrl style="FONT-SIZE: 0pt">II)-z`Q </SPAN> <BR><SPAN
class=copyctrl style="FONT-SIZE: 0pt">,w%ndnU </SPAN> <BR>//调用文件x.h中的函数f
<SPAN class=copyctrl style="FONT-SIZE: 0pt">w~hu6wkuq7 </SPAN> <BR>x.f();
<SPAN class=copyctrl style="FONT-SIZE: 0pt">y/#-ww
</SPAN> <BR>//调用文件y.h中的函数f <SPAN class=copyctrl
style="FONT-SIZE: 0pt">,hq$yF </SPAN> <BR>y.f(); <SPAN class=copyctrl
style="FONT-SIZE: 0pt">UOy y4 </SPAN> <BR>} <SPAN class=copyctrl
style="FONT-SIZE: 0pt">N5~A&b|R </SPAN> <BR><SPAN class=copyctrl
style="FONT-SIZE: 0pt">2^@w0J v
</SPAN> <BR>名字空间实质上是一个作用域。前面所述,数据成员要包含在类里面,那么做为一个作用域更大的类,要声明的话,根据需要,一般的类就可以放到标准名字空间里面。
<SPAN class=copyctrl style="FONT-SIZE: 0pt">&Rjsa#"i
</SPAN> <BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">[\Sk _ZK
</SPAN> <BR>那么,当我们声明了一个自己的标准名字空间之后,是否还可以添加包含更多的类呢? <SPAN class=copyctrl
style="FONT-SIZE: 0pt">z=Ni3 </SPAN> <BR><SPAN class=copyctrl
style="FONT-SIZE: 0pt">gp uaD$ [
</SPAN> <BR>答案是肯定的,当我们需要的时候,我们还可以按照原来的格式添加,这样,再引用的时候,在定义的标准名字空间里面就包含了所有添加的类。
<SPAN class=copyctrl style="FONT-SIZE: 0pt">Ck^)#:4+_A
</SPAN> <BR>二、关于名字空间定义 <SPAN class=copyctrl
style="FONT-SIZE: 0pt">`38H<!(L4 </SPAN> <BR>全局实体(global entity) <SPAN
class=copyctrl style="FONT-SIZE: 0pt">IAj\NI][
</SPAN> <BR>全局名字空间污染(global namespace pollution) <SPAN class=copyctrl
style="FONT-SIZE: 0pt">-\%DMP#, </SPAN> <BR><SPAN class=copyctrl
style="FONT-SIZE: 0pt">!W\z^I3 </SPAN> <BR>1、名字空间定义 <SPAN class=copyctrl
style="FONT-SIZE: 0pt">8 l !Bmh_ </SPAN> <BR>namespace 开头,后面是名字空间的名字。
<SPAN class=copyctrl style="FONT-SIZE: 0pt">~(aEatQIA </SPAN> <BR><SPAN
class=copyctrl style="FONT-SIZE: 0pt">X^UU,,- </SPAN> <BR>namespace
cplusplus_primer { <SPAN class=copyctrl style="FONT-SIZE: 0pt">z+I(h9D|'
</SPAN> <BR>class matrix {/*****/}; <SPAN class=copyctrl
style="FONT-SIZE: 0pt">EqLxZ_ </SPAN> <BR>void inverse(matrix &);
<SPAN class=copyctrl style="FONT-SIZE: 0pt">Xcg;$<4 </SPAN> <BR>matrix
operator+(const matrix &m1,matrix &m2) <SPAN class=copyctrl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -