C 中namespace和class的區別

2021-07-14 17:52:51 字數 492 閱讀 5214

class和namespace都是命名空間

但是class是封閉的,也就是class只能有乙個標頭檔案

namespace是開放的,特可以在多個檔案裡向同乙個namespace裡面新增東西,例如stl裡面的東西都在名字空間std裡面,但卻定義在了多個檔案裡面。

class做命名空間時,與namespace形式上類似

但是namespace是開放的,可以追加內容,而class是一次性的

另外,對class a的成員m用a::m並不總是允許的,這種方法只在兩種情況寫有效:

1.類的成員函式引用本類(含祖先類)的成員

2.其它函式引用類的靜態成員

因為類中定義了乙個(非靜態)成員變數,並沒有定義實體,只是定義了乙個名字。只有建立了類的例項(物件),成員變數的實體才存在。

但是namespace不存在這個問題,因為namespace中定義的變數,就是乙個實體,在任何情況下(只要在可見域內)。對namespace a,a::m的寫法都是允許的。

C 中的using和namespace用法

using 第一,引用程式集 即namespace 1 using system 宣告了程式中用到的乙個命名空間 system 我們可以不需要申明這個空間名稱就能直接使用這個空間裡面的類了。console.writeline hello 2 using io system.io 給命名空間 syst...

C 中namespace和class的區別

一 區別 namespace作用是避免程式中的命名衝突,傳統的c 程式是只有乙個namespace,現在程式越來越複雜,為了防止程式設計師在合併不同程式時出現函式 類 結構體等命名的重複,所以用到命名空間,namespace包含類 函式 常量和模板宣告等名字空間成員,例如 namespace myu...

C 中的全域性namespace

我們應該知道傳統的c 只有乙個全域性的namespace,但是由於現在的程式的規模越來越大,程式的分工越來越細,全域性作用域變得越來越擁擠,每個人都可能使用相同的名字來實現不同的庫,於是程式設計師在合併程式的時候就會可能出現名字的衝突。namespace引入了複雜性,解決了這個問題。namespac...