程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C、C++、C#三者編程語言的區別

C、C++、C#三者編程語言的區別

編輯:C++入門知識

 

從發展時間來說是先有C,然後有C++,然後有C#。

 

從結構上來說,C是面向過程的編程語言,C#,C++是面向對象的編程語言。

 

C++是C的升級,C#有點像C++和java的結合,更像java。

 

C++中C的語法全部成立,只是多了類的概念。

 

C# 是微軟在C++的基礎上融入了JAVA的網絡優勢自主開發的一種編程語言。

 

C++面向底層一點比較難,但可以開發出幾乎所有你想要的功能,不過效率上就底啦。

 

C# 是微軟推出的,面向網絡編程的語言,語法結構和C++很相似,而且比C++簡單多了,能實現現在社會上的大部分需求,而且開發效率很高。

 

————————————————————————————–

 

繼承關系是C->C++->C#,C++完全向C兼容,C程序幾乎不用修改即可在C++的編譯器上運行.C++也稱為帶類的C,在C的基礎上增加了許多面向對象的概念.雖然是C的擴展,但並不意味著C功能不如C++,最牛的操作系統是用C寫的(不是C++哦).

 

C#是微軟弄的一個東東,繼承了C和C++的許多東西,但和兩者基本上已完全不一樣了.你可以把它當作一種全新的語言來學.

 

C語言是一種結構化編程語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。

 

C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。

 

由於C語言實現了對硬件的編程操作,因此C語言集高級語言和低級語言的功能於一體。既可用於系統軟件的開發,也適合於應用軟件的開發。

 

此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。

 

C++ 是在C的基礎上改進後的一種編程語言,主要是增添了許多新的功能,難度也比C大,和C一樣側重於計算機底層操作,也就是系統軟件的開發。

 

C#是在C++的基礎上再一次改進後的編程語言,相比C++而言難度有所減小(微軟是這麼說的),側重於網絡和數據庫編程。這3種都是編程語言,語法基本上是一樣的,不過具體的內容差別還是挺大的。

 

VC++是一種編程軟件,就相當於一個作業本,你學習了C++語言以後,就需要把這種編程語言寫在一個作業本上,也就是寫在VC這種編程軟件上,來實現你需要的效果。

 

C++是C語言的升級版,c是c++的子集,c是面向過程的,c++是面向對象的。

 

C 語言與C++ 的區別有很多:

 

1,全新的程序思維,C 語言是面向過程的,而C++ 是面向對象的。

 

2,C 語言有標准的函數庫,它們松散的,只是把功能相同的函數放在一個頭文件中;而C++ 對於大多數的函數都是有集成的很緊密,特別是C 語言中沒有的,C++ 中的API 是對Window 系統的大多數API 有機的組合,是一個集體。但你也可能單獨調用API。

 

3,特別是C++ 中的圖形處理,它和語言的圖形有很大的區別。C 語言中的圖形處理函數基本上是不能用在中C++ 中的。C 語言標准中不包括圖形處理。

 

4,C 和C++ 中都有結構的概念,但是在C 語言中結構只有成員變量,而沒成員方法,而在C++ 中結構中,它可以有自己的成員變量和成員函數。但是在C 語言中結構的成員是公共的,什麼想訪問它的都可以訪問;而在VC++ 中它沒有加限定符的為私有的。

 

4,C 語言可以寫很多方面的程序,但是C++ 可以寫得更多更好,C++ 可以寫基於DOSr程序,寫DLL,寫控件,寫系統。

 

5,C 語言對程序的文件的組織是松散的,幾乎是全要程序處理;而C++ 對文件的組織是以工程,各文件分類明確。

 

6,C++ 中的IDE 很智能,和VB 一樣,有的功能可能比VB還強。

 

7,C++ 對可以自動生成你想要的程序結構使你可以省了很多時間。有很多可用的工具如加入MFC 中的類的時候,加入變量的時候等等。

 

8,C++ 中的附加工具也有很多,可以進行系統的分析,可以查看API;可以查看控件。

 

9,調試功能強大,並且方法多樣。

 

鑒於當下形勢,如果要學的話就學C#。

 

C# 與C++ 比較的話,最重要的特性就是C# 是一種完全面向對象的語言,而C++ 不是,另外C# 是基於IL 中間語言和.NET Framework CLR 的,在可移植性,可維護性和強壯性都比C++ 有很大的改進。

 

C# 的設計目標是用來開發快速穩定可擴展的應用程序,當然也可以通過Interop 和Pinvoke 完成一些底層操作,但是對於一些和底層系統相關很緊密的程序(譬如說驅動程序),還是建議用C++ 來寫。

 

C++ 不允許在一個構造函數中調用另外一個構造函數(稱為委派構造函數調用),而C# 則允許。委派構造函數調用語法上非常自然和易懂,事實上,C++ 不提供這一特性並不是出於語法上的考慮,而是出於資源管理的考慮(這樣的事情對C++ 來說還有很多很多)。

 

C++ 的構造函數用於分配資源,而析構函數用於釋放資源,構造函數和析構函數調用必須匹配,否則就打破了C++ 的基本規則。如果允許委派構造函數調用,則顯然會打破這一規則——構造函數被執行兩次,而析構函數只執行一次。當然,對一些類,例如前面的那個Point 來說這不是個問題,但是從語言機制的角度講這個特性可能屬於“危險”的特性。注:在最新的C++ 標准提議草案中,Herb 等人有一個關於允許委派構造函數調用的提案,當然這很大程度上是為了方便C++ /CLI 綁定。

 

在C++ 構造函數中,虛函數調用會被編譯器自動轉為普通函數調用,而在C# 構造函數中允許進行虛函數調用。C++ 這樣處理自然有它的原因——在C++ 中,構造函數執行完成後對象才初始化好,對於多態對象來說,也就意味著構造函數在背後執行了很重要的一件事情——初始化對象的虛函數表。

 

如果我們在基類的構造函數中調用了虛函數,則因為此時對象的虛函數表仍舊是基類的虛函數表,所以無法進行正確的虛函數調用。也就是這個原因,通常我們應該避免在構造函數中調用虛函數,因為它違背了虛函數的語義。而在C# 中,在對象的構造函數執行之前對象的類型信息就已經初始化好了,所以可以進行正常的虛函數調用。

 

基本上,這些就是兩者之間的區別。

摘自:狗一樣的男人's Blog

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved