C++、java、C#命名空間比較

來源:互聯網
上載者:User

    今天上網搜尋c++的命名空間,是想看c++的命名空間是不是開放的,我隨時可以往其中新增內容,無意中搜尋到了一片比較c++、java、C#命名空間的文章,後來發現還被很多人轉載了,在這裡,我表示壓力很大,因為那一篇文章純粹亂忽悠,卻能被很多人轉載,所以深切感覺到網上有技術含量的技術部落格太少了,大多都是複製粘貼充門面,對於他們對部落格業發現的貢獻,我表示膜拜,但對於他們對技術的褻瀆,我表示鄙視一下。

    貼出他們的論點,僅貼出來而已,不討論了,只是作為證明我上面第一段的話是有根據的,至於他們觀點的荒唐之處,就不說了,因為編程的應該都能看懂,所以我給原文作者留言是:大哥,你不是編程的吧。

 

支援泛型

引用簡潔

主體簡潔

優劣比較

C++

+1

+1

-1

9

Java

-1

+1

-1

8

C#

-1

-1

+1

8

 

部落格地址:http://blog.csdn.net/zade/article/details/610675

 

下面我來說我自己對這東西的比較:

  1. 出現命名空間的出發點:

 

C++ 為瞭解決重名衝突。決定了他不支援存取權限控制

C# 為了更好的封裝,有internal關鍵字與其對應

Java 同一個package下面,protected修飾的元素可被同package下的別的class訪問。Friendly,也就是預設default,說通俗點就是類成員之前不寫存取修飾詞,此時同protected,可以被同包下面的別的類訪問。

  1. 命名空間是否是開放的,即我在一個地方定義了一個命名空間,後來我在別的地方發現我想往其中增加內容,是否可以隨時隨地增加。

    C++ 是的,你在一個a.h中定義了namespace MM{},此時在b.h中同樣可以namespace mm{},編譯器自己會負責將其合并到一起。

    C# 這個就不用說了,絕對可以

    Java 不可以,java的包是對應物理檔案的,此時顯得那麼像C++的.h檔案。

  2. 命名空間是否是抽象的,雷同第二點。第二點搞清楚了也就知道這個結果了。
  3. 是否參與代碼結構組織:

    C++ 無,C++的編譯是首先編譯cpp,根據include去引入.h,其中c++的結構其實就是.h是怎麼組織的。命名空間僅僅為瞭解決重名,暫時沒發現沒別的用處

    Java 參與了,java的命名空間也就是package可是和物理檔案直接掛鈎的,又怎麼可能不參與組織圖呢

    C# 參與了,不過不是明目張胆的參與,而是抽象層面參與。物理檔案怎麼放,對於c#程式員來說基本沒概念,所以c#程式員可以根據愛好,建立一大堆檔案夾,然後分門別類放代碼檔案,java的程式員就不敢。因為C#是載入進來之後,由CLR層級的東西在幹那些程式集組織的事情。

也就這麼多了,至於上面個表格,就當空氣吧,我不知道import io.*的文法比 using namespace std;和using System.Draw;之類的複雜多少。也不清楚 package MM;比namespace MM{}這個簡潔多少。對於程式員來說,會覺得這個簡潔複雜也是問題的話,我覺得可以不用編程了,那多煩啊,豈不複雜死了。

 

我也不知道我其中有沒有說錯或者說漏了的地方,希望大家補充和糾正。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.