日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 18 大型程序工具)使用命名空间成员

發布時間:2025/3/21 c/c++ 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 18 大型程序工具)使用命名空间成员 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 3種方法

  • using 聲明
  • 命名空間的別名( namespace alias)
  • using 指示( using directive)

1.1 命名空間的別名

namespace cplusplus_primer { /* ... / ;} namespace primer = cplusplus_primer;

命名空間的別名也可以指向一個嵌套的命名空間:

namespace Qlib = primer::QueryLib; Qlib::Query q;

一個命名空間可以有好幾個同義詞或別名, 所有別名都與命名空間原來的名字等價

1.2 using 聲明( using declaration)

一條 using 聲明( using declaration) 語句一次只引入命名空間的一個成員

using 聲明的名字的作用域與 using 聲明語句本身的作用域一致

eg.

using nsl::Student; //在用上面的using聲明后,在其后程序中出現的Student就是隱含地指nsl::Student

1.2.1 作用域

有效范圍從using聲明的地方開始,一直到using聲明所在的作用域結束為止

未加限定的名字只能在using聲明所在的作用域以及內層作用域中使用

一條using聲明可以出現在全局作用域、局部作用域、命名空間作用域以及類的作用域中;在類的作用域中,這樣的聲明語句只能指向基類成員(因為派生類只能為那些它可以訪問的名字提供using聲明)

當命名空間被注入到它的外層作用域之后,很有可能該命名空間中定義的名字會與其外層作用域中的成員沖突。這種沖突是允許存在的,但是要想使用沖突的名字,我們就必須明確指出名字的版本

namespace blip {int bi = 16, bj = 15, bk = 23;// other declarationsint bj = 0; // ok: bj inside blip is hidden inside a namespacevoid manip(){// using directive - names in blip "added" to global scopeusing namespace blip;// clash between ::bj and blip::bj// detected only if bj is used++bi; // sets blip::bi to 17++bj; // error: ambiguous// global bj or blip::bj?++::bj; // ok: sets global bj to 1++blip::bj; // ok: sets blip::bj to 16int bk = 97; // local bk hides blip::bk++bk; // sets local bk to 98} }

1.2.2. 頭文件與 using 聲明或指示

頭文件如果在其頂層作用域中含有 using 指示或 using 聲明, 則會將名字注入到所有包含了該頭文件的文件中。

通常情況下, 頭文件應該只負責定義接口部分的名字, 而不定義實現部分的名字。 因此, 頭文件最多只能在它的函數或命名空間內使用 using 指示或 using 聲明

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 18 大型程序工具)使用命名空间成员的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。