⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 标准名字空间的理解 - 交大蓝盾 blog - powered by phpwind_net.htm

📁 关于C+编程思想的课件
💻 HTM
📖 第 1 页 / 共 5 页
字号:
style="FONT-SIZE: 0pt">AQmwN ZvrU </SPAN>&nbsp;<BR>{ <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">y/ZNNrlr </SPAN>&nbsp;<BR>/******/ <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">(_*c@ </SPAN>&nbsp;<BR>} <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">pa9moTL </SPAN>&nbsp;<BR>const double pi = 3.1416; 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">^aP\V@g+ </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">$@!}RrO~m- </SPAN>&nbsp;<BR>} <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">1iO{9oWUzG </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">R7cIE </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">H0ylm|kJ 
</SPAN>&nbsp;<BR>在名字空间cplusplus_primer中声明的类的名字是 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">{s2S&gt;:JDNg </SPAN>&nbsp;<BR>cplusplus_primer::matrix 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">P&gt;Qi66be:B 
</SPAN>&nbsp;<BR>函数的名字是 <SPAN class=copyctrl style="FONT-SIZE: 0pt">IUV]cNX 
</SPAN>&nbsp;<BR>cplusplus_primer::inverse() <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">Ag!6H </SPAN>&nbsp;<BR>常量的名字是 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">FC{OeBr+ </SPAN>&nbsp;<BR>cplusplus_primer::pi <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">]@x5f6tZ </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">*,aR`-jv 
</SPAN>&nbsp;<BR>类,函数,常量被声明它的名字空间的名字限定修饰: <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">lR6H G$X </SPAN>&nbsp;<BR>这些名字被成为限定修饰符(qualified name) 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">TF^~zHo|MT </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">zCU ;~$ </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">yKkWmo ~z% 
</SPAN>&nbsp;<BR>名字空间的定义不一定是连续的.例如 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">/H~tOY=S </SPAN>&nbsp;<BR>namespace cplusplus_primer{ 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">hH"o% </SPAN>&nbsp;<BR>class 
matrix {/*****/} <SPAN class=copyctrl style="FONT-SIZE: 0pt">7U&gt;g 6# 
</SPAN>&nbsp;<BR>const double pi = 3.1416; <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">]MC1"{_qT </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">+3? ` </SPAN>&nbsp;<BR>} <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">@_L ?FHh </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">(Ks&gt;cv &lt; </SPAN>&nbsp;<BR>namespace 
cplusplus_primer{ <SPAN class=copyctrl style="FONT-SIZE: 0pt">rguI? h# 
</SPAN>&nbsp;<BR>void inverse(matrix &amp;); <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">6%}d\h </SPAN>&nbsp;<BR>matrix operator+ (const 
matrix &amp;m1,const matrix &amp;m2) <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">44o </SPAN>&nbsp;<BR>{/********/} <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">qyk| '$J </SPAN>&nbsp;<BR>} <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">xi&gt;COB|tqk </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">;2z|t,. 
</SPAN>&nbsp;<BR>名字空间的定义可是非连续的,这对生成一个库很有帮助,它使我们更容易将库的源代码组织成 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">&gt;#mlz2; </SPAN>&nbsp;<BR>接口和实现部分。 <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">,F9g` </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">zC\n&lt; </SPAN>&nbsp;<BR>2、域操作符 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">zyB}:~ </SPAN>&nbsp;<BR>:: <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">C6 1@Di[z 
</SPAN>&nbsp;<BR>用户声明的名字空间成员名自动被加上前缀,名字空间名后面加上域操作符(::),名字空间成员名 <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">D OzP4H&lt; 
</SPAN>&nbsp;<BR>由该名字空间名进行限定修饰。 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">:v^o@si </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">chVC3 H2Y 
</SPAN>&nbsp;<BR>名字空间成员的声明被隐藏在其名字空间中,除非我们为编译器指定查找的声明的名字空间,否则 <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">DI0"BTXEXq 
</SPAN>&nbsp;<BR>编译器将在当前域及嵌套包含当前域的域中查找该名字的声明。 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">80G;+3S </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">S"K *&gt; </SPAN>&nbsp;<BR>注意!!! <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">@${=)D|1% 
</SPAN>&nbsp;<BR>域操作符也可以被用来引用全局名字空间的成员。因为全局名字空间没有名字。 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">&gt;x J&lt;pSlG </SPAN>&nbsp;<BR>::member_name <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">v)~'8~s </SPAN>&nbsp;<BR>指的是全局名字空间的成员。 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">2O"Y%&gt;Gf </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">8OKO^ </SPAN>&nbsp;<BR>#include 
&lt;iostream&gt; <SPAN class=copyctrl style="FONT-SIZE: 0pt">u_x. h'J 
</SPAN>&nbsp;<BR>const int max = 65000; <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">TmUx&amp;Flj| </SPAN>&nbsp;<BR>const int lineLength = 
12; <SPAN class=copyctrl style="FONT-SIZE: 0pt">6Xq Ig#2W 
</SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">:hMp%4h{p 
</SPAN>&nbsp;<BR>void fibonacci(int max) <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">J&lt;LP2K,5 </SPAN>&nbsp;<BR>{ <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">+.V-5 </SPAN>&nbsp;<BR>if (max &lt;2) return; <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">va$TWa&lt;7oT </SPAN>&nbsp;<BR>cout 
&lt;&lt; "0 1"; <SPAN class=copyctrl style="FONT-SIZE: 0pt">S$PCb&gt;O 
</SPAN>&nbsp;<BR>int v1 = 0,v2=1,cur; <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">u(_f/O{6/I </SPAN>&nbsp;<BR>for (int ix=3;ix &lt;= 
max;++ix) <SPAN class=copyctrl style="FONT-SIZE: 0pt">mg4A @b= 
</SPAN>&nbsp;<BR>{ <SPAN class=copyctrl style="FONT-SIZE: 0pt">#+3vmz7d 
</SPAN>&nbsp;<BR>cur = v1+v2; <SPAN class=copyctrl style="FONT-SIZE: 0pt">x1@\|= 
C^ </SPAN>&nbsp;<BR>if(cur&gt;::max) break; //引用全局名字空间的变量; <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">MOjBHLpW </SPAN>&nbsp;<BR>cout &lt;&lt; cur &lt;&lt;""; 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">1d`AQd[  </SPAN>&nbsp;<BR>v1=v2; 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">o~K.s&lt;!AG 
</SPAN>&nbsp;<BR>v2=cur; <SPAN class=copyctrl style="FONT-SIZE: 0pt">P_DYane 
</SPAN>&nbsp;<BR>if(ix % lineLength ==0) cout &lt;&lt; endl; <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">60CD.19" </SPAN>&nbsp;<BR>} <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">Wk4.%t\^d </SPAN>&nbsp;<BR>} <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">OVtXslX </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">?+qD 0uY </SPAN>&nbsp;<BR>3 、嵌套名字空间 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">G"r?V $g </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">giR=(0 </SPAN>&nbsp;<BR>。。。。。 <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">7Y=eXy]U </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">Vua0Nofo </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">Lt?"GZWQS </SPAN>&nbsp;<BR>4 使用名字空间成员 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">V 81%G^S? </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">AxqF}X L 
</SPAN>&nbsp;<BR>使用限定修饰的名字形式namespace_name::member_name来引用名字空间,毫无疑问是非常麻烦的。 <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">`dcL] </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">Sfqz e </SPAN>&nbsp;<BR>using 
声明,using指示符 <SPAN class=copyctrl style="FONT-SIZE: 0pt">Ur ?|DI 
</SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">#zF&amp;L 
</SPAN>&nbsp;<BR>5 名字空间别名 <SPAN class=copyctrl style="FONT-SIZE: 0pt">+cYltRUP 
</SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">FN,-o5nJh 
</SPAN>&nbsp;<BR>namespace International_Business_Machines <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">2*qPX$j </SPAN>&nbsp;<BR>{/*********/} <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">E%%J`A </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">Nj(SF md </SPAN>&nbsp;<BR>namespace IBM 
= International_Business_Machines; <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">]GH^Q =@ </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">-sKC&gt;m </SPAN>&nbsp;<BR>6、 using声明 <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">{ %JD$4ff </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">l73+|J@"b; </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">lt[uyGVS~ </SPAN>&nbsp;<BR>namespace 
cplusplus_primer <SPAN class=copyctrl style="FONT-SIZE: 0pt">*hw],@` 
</SPAN>&nbsp;<BR>{ <SPAN class=copyctrl style="FONT-SIZE: 0pt">n2lo/3Kbm 
</SPAN>&nbsp;<BR>namespace MatrixLib <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">gDbS#z </SPAN>&nbsp;<BR>{ <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">&gt;Ks3)rSgt </SPAN>&nbsp;<BR>class matrix {/******/}; 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">G2u/%(Hv+ </SPAN>&nbsp;<BR>} <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">FvVmUf9, </SPAN>&nbsp;<BR>} <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">o*T$e2Xzs. </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">;U|*0T0`L, </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">,`+/ &lt;dp9 </SPAN>&nbsp;<BR>using 
cplusplus::MatrixLib::matrix; <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">.}_'JTGO </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">JcW8x /E </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">Cpcp(`@ </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">OY``OH|bo </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">? K'X{;N </SPAN>&nbsp;<BR>using 声明引入的名字有以下特性: <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">p}(_X%/ </SPAN>&nbsp;<BR>1&gt; 
它在该域中必须唯一。 <SPAN class=copyctrl style="FONT-SIZE: 0pt">\Z:6!g&gt;R? 
</SPAN>&nbsp;<BR>2&gt; 由外围域中声明引入的相同名字被其隐藏。 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">Vf1z6_l79 </SPAN>&nbsp;<BR>3&gt; 它被嵌套域中的相同名字的声明隐藏。 <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">kb|pbjnnB </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">b1HS) &lt;; </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">"U1AHMMN </SPAN>&nbsp;<BR>namespace blip 
{ <SPAN class=copyctrl style="FONT-SIZE: 0pt">{9^y0Yu@` </SPAN>&nbsp;<BR>int bi 
= 16,bj = 15, bk = 23; <SPAN class=copyctrl style="FONT-SIZE: 0pt">6c=miCM~01 
</SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">v,EF3Q 
</SPAN>&nbsp;<BR>} <SPAN class=copyctrl style="FONT-SIZE: 0pt">{elb/VrpV 
</SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">%+] MNH 
</SPAN>&nbsp;<BR>int bj = 0; <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">x-&amp; }q}f </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">X5$d4xS </SPAN>&nbsp;<BR>void mainip() <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">B}!EnHqP </SPAN>&nbsp;<BR>{ <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">DJK6N\ </SPAN>&nbsp;<BR>using 
blip::bi; //函数mainip()中的bi指向blip::bi <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">&gt;D&gt;D}IS| </SPAN>&nbsp;<BR>++bi; //设置blip::bi为17 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">ntcO85d </SPAN>&nbsp;<BR>using 
blip::bj //隐藏全局域中的bj <SPAN class=copyctrl style="FONT-SIZE: 0pt">P J8 fa 
</SPAN>&nbsp;<BR>++bj; <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">&gt;&amp;nQ </SPAN>&nbsp;<BR>int bk; //bk在局部域中声明 
<SPAN class=copyctrl style="FONT-SIZE: 0pt">} \B/AC </SPAN>&nbsp;<BR>using 
blip:bk; //错误:在mainip()中重复定义bk <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">BZ575 </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">P&amp;VNMv </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">f}qDZ*F </SPAN>&nbsp;<BR>} <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">uME #O: </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">C$.U&lt;%M+ </SPAN>&nbsp;<BR>int wrongInit = bk; 
//错误:bk在这里不可见 <SPAN class=copyctrl style="FONT-SIZE: 0pt">"7r4 
</SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">^kqhCo]=&lt; 
</SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">[3l9&amp;X- 
</SPAN>&nbsp;<BR>7、 using 指示符 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">jE79mya </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">T)Y@ c </SPAN>&nbsp;<BR><SPAN class=copyctrl 
style="FONT-SIZE: 0pt">v+X7UC </SPAN>&nbsp;<BR>namespace blip{ <SPAN 
class=copyctrl style="FONT-SIZE: 0pt"> U@YI7(0$ </SPAN>&nbsp;<BR>int bi = 16,bj 
= 15, bk = 23; <SPAN class=copyctrl style="FONT-SIZE: 0pt">4M]XU9C0 
</SPAN>&nbsp;<BR>} <SPAN class=copyctrl style="FONT-SIZE: 0pt">O?O#24&lt; 
</SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">V 03tA}G 
</SPAN>&nbsp;<BR>int bj = 0; <SPAN class=copyctrl style="FONT-SIZE: 0pt">E&lt; * 
}]V3 </SPAN>&nbsp;<BR><SPAN class=copyctrl style="FONT-SIZE: 0pt">a?38P L 
</SPAN>&nbsp;<BR>void mainip() <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">I~mj#?g#rG </SPAN>&nbsp;<BR>{ <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">q|Ce$[O$ </SPAN>&nbsp;<BR>using namespace blip; <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">gZ GpK </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">@$&gt;Dznup </SPAN>&nbsp;<BR>++bi; 
//设置blip::bi为17; <SPAN class=copyctrl style="FONT-SIZE: 0pt">E$ZqUs[ rv 
</SPAN>&nbsp;<BR>++bj; //错误:二义性 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">X!o\3qBR$j </SPAN>&nbsp;<BR>全局bj还是blip:bj? <SPAN 
class=copyctrl style="FONT-SIZE: 0pt">"H:%NR&amp;- </SPAN>&nbsp;<BR><SPAN 
class=copyctrl style="FONT-SIZE: 0pt">oXoh !&gt;1 </SPAN>&nbsp;<BR>++::bj; // 
设置全局bj为1 <SPAN class=copyctrl style="FONT-SIZE: 0pt">Bicl8bo 
</SPAN>&nbsp;<BR>++blip::bj; // 设置blip::bj为16 <SPAN class=copyctrl 
style="FONT-SIZE: 0pt">|K95.f </SPAN>&nbsp;<BR>int bk = 97; //局部bk隐藏blip:bk 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -