當前位置:首頁 » 編程語言 » c語言面向對象底層驅動
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言面向對象底層驅動

發布時間: 2022-07-21 06:24:33

c語言現在主要應用與哪方面

不知道樓主平常玩不玩LINUX,有沒有看過開源代碼。國內的嵌入式程序員需求還是很大的,C程序員的找工作方向細分:
1、內核程序員 (為特定產品定製內核,你可能需要在一個穩定版本的內核基礎上增加一些內容以滿足公司產品的需求)
2、驅動軟體設計人員 (這個就不用多說了,和1一樣都是乾的越久越吃香的)
3、應用程序設計 (其實也不差,只不過大部分人都只是移植一下開源代碼,寫寫腳本,如果你的水平真的很牛,也不會比前兩者差的)

以上只是拿linux平台舉例,還有很多其他的類UNIX平台。C語言可不止僅僅用在嵌入式開發這一個方面,大家熟知的apache-http-server、mysql、php等等很多著名軟體都是用C開發的,有興趣可以去www.freshmeat.net 和 www.sourceforge.net 等開源網站去下載一些優秀的開源代碼學習一下。
推薦的看代碼工具是 Source Insight 3.5 。
---------------------------------------------------------------
自己

⑵ C語言和JAVA有什麼區別用作的方向也不一樣嗎

C是面向過程的語言,JAVA是面向對象的語言,個人認為不能單純地比較好壞
在速度上,C語言編寫的程序要優於JAVA,因為JAVA必須運行在虛擬機的環境中,這就是很多桌面應用程序都不用JAVA寫的原因,但是,正是因為虛擬機,JAVA獲得的平台無關性,而C的程序有可能需要重新修改編譯才能實現平台的移植;另一方面,C語言比JAVA語言更「底層」,因此可以用C編寫例如硬體的驅動,而JAVA在這方面則力不從心。
JAVA主要的應用是在網路上,尤其是分布式系統的開發,這是C或者其他語言所不能及的(或者很難實現),C語言則在桌面的應用程序或者嵌入式開發中佔有一定的地位

⑶ c語言是面向過程的還是面向對象的

c語言是面向過程的。面向過程是著重於其中程序設計的演算法、語言的運用,如設計不同功能的函數。

C++是面向對象的。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

c語言的特點:

1、代碼具有較好的可移植性

C語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植,這就意味著,對於一台計算機編寫的C程序可以在另一台計算機上輕松地運行,從而極大的減少了程序移植的工作強度。

2、可生成高質量、目標代碼執行效率高的程序

與其他高級語言相比,C語言可以生成高質量和高效率的目標代碼,故通常應用於對代碼質量和執行效率要求較高的嵌入式系統程序的編寫。

⑷ 有誰能提供如何用C語言實現面向對象,而且要具體的文檔,謝謝!最好是中文的,本人英文水平不是很好!

個問題每星期都會在游戲開發論壇上被問上好幾次。這是個很好的問題,但是,沒人能給出簡單的答案。在某些應用程序中,總有一些計算機語言優於其他語言。下面是幾種用於編寫游戲的主要編程語言的介紹及其優缺點。希望這篇文章能幫助你做出決定。

1、C語言

如果說FORTRAN和COBOL是第一代高級編譯語言,那麼C語言就是它們的孫子輩。C語言是Dennis Ritchie在七十年代創建的,它功能更強大且與ALGOL保持更連續的繼承性,而ALGOL則是COBOL和FORTRAN的結構化繼承者。C語言被設計成一個比它的前輩更精巧、更簡單的版本,它適於編寫系統級的程序,比如操作系統。在此之前,操作系統是使用匯編語言編寫的,而且不可移植。C語言是第一個使得系統級代碼移植成為可能的編程語言。

C語言支持結構化編程,也就是說C的程序被編寫成一些分離的函數呼叫(調用)的集合,這些呼叫是自上而下運行,而不像一個單獨的集成塊的代碼使用GOTO語句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的「空心粉式代碼」代碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當結構化方案非常復雜時才建議使用。

正由於它的系統編程根源,將C和匯編語言進行結合是相當容易的。函數調用介面非常簡單,而且匯編語言指令還能內嵌到C代碼中,所以,不需要連接獨立的匯編模塊。

優點:有益於編寫小而快的程序。很容易與匯編語言結合。具有很高的標准化,因此其他平台上的各版本非常相似。

缺點:不容易支持面向對象技術。語法有時會非常難以理解,並造成濫用。

移植性:C語言的核心以及ANSI函數調用都具有移植性,但僅限於流程式控制制、內存管理和簡單的文件處理。其他的東西都跟平台有關。比如說,為Windows和Mac開發可移植的程序,用戶界面部分就需要用到與系統相關的函數調用。這一般意味著你必須寫兩次用戶界面代碼,不過還好有一些庫可以減輕工作量。

用C語言編寫的游戲:非常非常多。

資料:C語言的經典著作是《The C Programming Language》,它經過多次修改,已經擴展到最初的三倍大,但它仍然是介紹C的優秀書本。一本極好的教程是《The Waite Group's C Primer Plus》。

2、C++

C++語言是具有面向對象特性的C語言的繼承者。面向對象編程,或稱OOP是結構化編程的下一步。OO程序由對象組成,其中的對象是數據和函數離散集合。有許多可用的對象庫存在,這使得編程簡單得只需要將一些程序「建築材料」堆在一起(至少理論上是這樣)。比如說,有很多的GUI和資料庫的庫實現為對象的集合。

C++總是辯論的主題,尤其是在游戲開發論壇里。有幾項C++的功能,比如虛擬函數,為函數呼叫的決策制定增加了一個額外層次,批評家很快指出C++程序將變得比相同功能的C程序來得大和慢。C++的擁護者則認為,用C寫出與虛擬函數等價的代碼同樣會增加開支。這將是一個還在進行,而且不可能很快得出結論的爭論。

我認為,C++的額外開支只是使用更好的語言的小付出。同樣的爭論發生在六十年代高級程序語言如COBOL和FORTRAN開始取代匯編成為語言所選的時候。批評家正確的指出使用高級語言編寫的程序天生就比手寫的匯編語言來得慢,而且必然如此。而高級語言支持者認為這么點小小的性能損失是值得的,因為COBOL和FORTRAN程序更容易編寫和維護。

優點:組織大型程序時比C語言好得多。很好的支持面向對象機制。通用數據結構,如鏈表和可增長的陣列組成的庫減輕了由於處理低層細節的負擔。

缺點:非常大而復雜。與C語言一樣存在語法濫用問題。比C慢。大多數編譯器沒有把整個語言正確的實現。

移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數可移植性用戶界面庫都使用C++對象實現。

使用C++編寫的游戲:非常非常多。大多數的商業游戲是使用C或C++編寫的。

資料:最新版的《The C++ Programming Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who's Afraid of C++》,如果你已經熟知C,那麼試一下《Teach Yourself C++》。

3、我該學習C++或是該從C開始

我不喜歡這種說法,但它是繼「我該使用哪門語言」之後最經常被問及的問題。很不幸,不存在標准答案。你可以自學C並使用它來寫程序,從而節省一大堆的時間,不過使用這種方法有兩個弊端:

你將錯過那些面向對象的知識,因為它可能在你的游戲中使得數據建模更有效率的東西。

最大的商業游戲,包括第一人稱射擊游戲很多並沒有使用C++。但是,這些程序的作者即使使用老的C的格式,他們通常堅持使用面向對象編程技術。如果你只想學C,至少要自學OO(面向對象)編程技術。OO是模擬(游戲)的完美方法,如果你不學習OO,你將不得不「辛苦」的工作。

4、匯編語言

顯然,匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。如果你要找的是類英語且有相關的自我說明的語言,這不是你想要的。

確切的說,任何你能在其他語言里做到的事情,匯編都能做,只是不那麼簡單 — 這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術讓東西變得更易於使用。

總的來說,匯編語言不會在游戲中單獨應用。游戲使用匯編主要是使用它那些能提高性能的零零碎碎的部分。比如說,毀滅戰士整體使用C來編寫,有幾段繪圖程序使用匯編。這些程序每秒鍾要調用數千次,因此,盡可能的簡潔將有助於提高游戲的性能。而從C里調用匯編寫的函數是相當簡單的,因此同時使用兩種語言不成問題。

特別注意:語言的名字叫「匯編」。把匯編語言翻譯成真實的機器碼的工具叫「匯編程序」。把這門語言叫做「匯編程序」這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發。

優點:最小、最快的語言。匯編高手能編寫出比任何其他語言能實現的快得多的程序。你將是利用處理器最新功能的第一人,因為你能直接使用它們。

缺點:難學、語法晦澀、堅持效率,造成大量額外代碼 — 不適於心臟虛弱者。

移植性:接近零。因為這門語言是為一種單獨的處理器設計的,根本沒移植性可言。如果使用了某個特殊處理器的擴展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。

使用匯編編寫的游戲:我不知道有什麼商業游戲是完全用匯編開發的。不過有些游戲使用匯編完成多數對時間要求苛刻的部分。

資料:如果你正在找一門匯編語言的文檔,你主要要找晶元的文檔。網路上如Intel、AMD、Motorola等有一些關於它們的處理器的資料。對於書籍而言,《Assembly Language: Step-By-Step》是很值得學習的。

5、Pascal語言

Pascal語言是由Nicolas Wirth在七十年代早期設計的,因為他對於FORTRAN和COBOL沒有強制訓練學生的結構化編程感到很失望,「空心粉式代碼」變成了規范,而當時的語言又不反對它。Pascal被設計來強行使用結構化編程。最初的Pascal被嚴格設計成教學之用,最終,大量的擁護者促使它闖入了商業編程中。當Borland發布IBM PC上的 Turbo Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。

然而時日不久,C編譯器變得更快,並具有優秀的內置編輯器和調試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉向了為Windows 編寫程序的C++。Turbo Pascal很快被人遺忘。

最後,在1996年,Borland發布了它的「Visual Basic殺手」— Delphi。它是一種快速的帶華麗用戶界面的 Pascal編譯器。由於不懈努力,它很快贏得了一大群愛好者。

基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的「聰明」代碼,它同時也使得一些低級操作,如位操作變得困難起來。

優點:易學、平台相關的運行(Delphi)非常好。

缺點:「世界潮流」面向對象的Pascal繼承者(Mola、Oberon)尚未成功。語言標准不被編譯器開發者認同。專利權。

移植性:很差。語言的功能由於平台的轉變而轉變,沒有移植性工具包來處理平台相關的功能。

使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。

資料:查找跟Delphi有關的資料,請訪問:Inprise Delphi page。

6、Visual Basic

哈,BASIC。回到八十年代的石器時代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易於學習,卻是可怕的無組織化,它義無反顧的使用了GOTO充斥的「空心粉式代碼」。當回憶起BASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。

快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環境的許可權,並把它作為Visual Basci 1.0發布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結構化了,行號也被去除。實際上,這門語言與那些內置於TRS-80、Apple II及Atari里的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。

經過六個版本,Visual Basic變得非常漂亮。用戶界面發生了許多變化,但依然保留著「把代碼關聯到用戶界面」的主旨。這使得它在與即時編譯結合時變成了一個快速原型的優異環境。

優點:整潔的編輯環境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX 7已准備提供Visual Basic的支持。

缺點:程序很大,而且運行時需要幾個巨大的運行時動態連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調用Windows的API程序非常笨拙,因為VB的數據結構沒能很好的映射到C中。有OO功能,但卻不是完全的面向對象。專利權。

移植性:非常差。因為Visual Basic是微軟的產品,你自然就被局限在他們實現它的平台上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉變成Java。

使用Visual Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業性的。

資料:微軟的VB頁面有一些信息。

7、Java

Java是由Sun最初設計用於嵌入程序的可移植性「小C++」。在網頁上運行小程序的想法著實吸引了不少人的目光,於是,這門語言迅速崛起。事實證明,Java不僅僅適於在網頁上內嵌動畫 — 它是一門極好的完全的軟體編程的小語言。「虛擬機」機制、垃圾回收以及沒有指針等使它很容易實現不易崩潰且不會泄漏資源的可靠程序。

雖然不是C++的正式續篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向對象編程,要在Java里寫非面向對象的程序就像要在Pascal里寫「空心粉式代碼」一樣困難。

優點:二進制碼可移植到其他平台。程序可以在網頁中運行。內含的類庫非常標准且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網上數量巨大的代碼常式。

缺點:使用一個「虛擬機」來運行可移植的位元組碼而非本地機器碼,程序將比真正編譯器慢。有很多技術(例如「即時」編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經過慎重考慮,雖然被正式廢除,但為了保持向後兼容不得不保留。越高級的技術,造成處理低級的機器功能越困難,Sun為這門語言增加新的「受祝福」功能的速度實在太慢。

移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平台上不穩定。

使用Java編寫的游戲:網頁上有大量小的Applet,但僅有一些是商業性的。有幾個商業游戲使用Java作為內部腳本語言。

資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關於Java新聞的最好去處。

8、創作工具

上面所提及的編程語言涵蓋了大多數的商業游戲。但是也有一個例外,這個大游戲由於它的缺席而變得突出。

「神秘島」。沒錯,賣得最好的商業游戲不是使用以上任何一門語言編的,雖然有人說「神秘島」99%是使用 3D建模工具製作的,其根本的編程邏輯是在HyperCard里完成的。

多數創作工具有點像Visual Basic,只是它們工作在更高的層次上。大多數工具使用一些拖拉式的流程圖來模擬流程式控制制。很多內置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。

優點:快速原型 — 如果你的游戲符合工具製作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網頁上發布很多創作工具生成的程序。

缺點:專利權,至於將增加什麼功能,你將受到工具製造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創作工具無法完成的。某些工具會產生臃腫得可怕的程序。

移植性:因為創作工具是具有專利權的,你的移植性以他們提供的功能息息相關。有些系統,如Director可以在幾種平台上創作和運行,有些工具則在某一平台上創作,在多種平台上運行,還有的是僅能在單一平台上創作和運行。

使用創作工具編寫的游戲:「神秘島」和其他一些同類型的探險游戲。所有的Shockwave游戲都在網路上。

資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。

9、易語言

★全中文支持,無需跨越英語門檻。★全可視化編程,支持所見即所得程序界面設計和程序流程編碼。★中文語句快速錄入。提供多種內嵌專用輸入法,徹底解決中文語句輸入速度慢的問題。★代碼即文檔。自動規范強制代碼格式轉換,任何人編寫的任何程序源代碼格式均統一。★參數引導技術,方便程序語句參數錄入。★無定義類關鍵字。所有程序定義部分均採用表格填表方式,用戶無需記憶此類關鍵字及其使用格式。★命令格式統一。所有程序語句調用格式完全一致。★語法格式自動檢查。自動檢查並提示所輸入語句的語法格式是否正確,且可自動添加各類名稱。★全程提示與幫助。滑鼠停留立即顯示相關項目提示。編程時提示語法格式,調試時提示變數當前內容,隨時按下F1鍵可得到與當前主題相關詳細幫助等。★名稱自動管理。用戶修改任一名稱定義,其它所有包含該名稱的程序代碼均自動修正。★集成化開發環境。集界面設計、代碼編寫、調試分析、編譯打包等於一體。★學習資源豐富。詳細的幫助文件、數十兆的知識庫、數萬用戶的網上論壇、教材已出版發行……

10、結論

你可能希望得到一個關於「我該使用哪種語言」這個問題的更標準的結論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適於快而小的程序,但不支持面向對象的編程。C++完全支持面向對象,但是非常復雜。Visual Basic與Delphi易學,但不可移植且有專利權。Java有很多簡潔的功能,但是慢。創作工具可以以最快的速度產生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什麼樣的游戲,並選擇對你的游戲支持最好的語言。「試用三十天」的做法成為工業標準是件好事情。

⑸ c++開發驅動都需要什麼知識和軟體支持呢,驅動開發用c、c++、java哪一個開發起來更好一些呢

只有c語言才適合底層驅動開發,樓上的說c++適合驅動是誤導你的。你可以下載一個linux內核的源碼包來看看,裡面的代碼全部是c語言。嚴格來說c語言是介於低級和高級語言的中級語言。驅動開發是針對硬體來開發的,比如:網卡驅動,音效卡驅動,硬碟驅動,等等。硬體只能識別機器指令,現在能直接操作硬體的只有匯編語言和c語言。匯編語言是機器指令的助記符,理論上說最適合做驅動,但是它的移植性非常差,過於依賴平台,所以在底層用得很少,有一些很核心的技術還是要匯編語言才能做的。c語言可移植性比匯編強很多,和人類的交流方式很像,它又能直接操作硬體,所以精通c語言幾乎就可以完成所有的驅動了。c++是c的加強版,也許你認為用c++更好,c++是面向對象的語言,它的函數都是封裝好的,對庫依賴性很強的。你想想剛出廠的網卡什麼代碼都沒有的,哪裡來的庫供你調用呀。java更加不用說了,它沒有指針的概念,沒有指針就不能對地址進行操作,所以java是不能做底層驅動的。有些人說用c++和java做驅動,那指的做應用層,並不是底層的驅動。底層驅動只有c才最合適,但是c在應用層的使用已經被淘汰了。

⑹ C語言是面向對象還是面向過程的

「C語言」面向過程和面向對象的區別是:面向過程是著重於其中程序設計的演算法、語言的運用,如設計不同功能的函數。面向對象,按書上說是在C語言的基礎上發展起來的,通俗說也就是更高一級的C語言,也就是C++,保留了大部分C語言的功能,而在設計方面卻著重於對象的處理,獲得更好地性能。
面向過程與面向對象的區別,由「如何把大象裝進冰箱」來看:
一、面向過程
為了把大象裝進冰箱,需要3個過程。
/* 思路:
1、把冰箱門打開(得到打開門的冰箱)。
2、把大象裝進去(打開門後,得到裡面裝著大象的冰箱)。
3、把冰箱門關上(打開門、裝好大象後,獲得關好門的冰箱)。
*/
//每個過程有一個階段性的目標,依次完成這些過程,就能把大象裝進冰箱。
//寫法一:
1:冰箱開門(冰箱)。
2:冰箱裝進(冰箱,大象)。
3:冰箱關門(冰箱) 。
//寫法一變體:
1:(冰箱開門 冰箱)。
2:(冰箱裝進 冰箱大象)。
3:(冰箱關門 冰箱)。
//寫法二:
冰箱關門(冰箱裝進(冰箱開門(冰箱),大象))。
//寫法二變體:
(冰箱關門 (冰箱裝進 (冰箱開門 冰箱) 大象))。
二、面向對象
為了把大象裝進冰箱,需要做三個動作(或者叫行為)。每個動作有一個執行者,它就是對象。
/* 思路:
1、冰箱,你給我把門打開。
2、冰箱,你給我把大象裝進去(或者說,大象,你給我鑽到冰箱里去)。
3、冰箱,你給我把門關上。
*/
//依次完成這些動作,你就可以把大象裝進去。
//寫法一:
1:冰箱.開門()
2:冰箱.裝進(大象)
3:冰箱.關門()
//寫法二:
冰箱.開門().裝進(大象).關門()

⑺ C語言和C++哪個好學些這兩種語言分別用在什麼領域

當然是C要好學一些
c是面向過程的
而c++是面向對象的
其實主要是c++的有些概念比較難理解一些
至於運用領域兩者都是編程工具
現在用c做軟體比較常見
雖然c++也做
但只是大型軟體
此外C
機電信號控制方面用的比較廣泛...

⑻ C語言和C++語言有什麼區別

在Java程序中的每個變數無論是基本數據類型(布爾型,字元型,位元組,short,int和長,浮點型,雙精度),或對象

C + +基本類型有許多種,額外的結構,聯合,枚舉,數組和指針,C + +指針可以指向一個對象,不能指向的對象

Java中沒有枚舉,聯合類型,因為Java認為沒有必要。刪除的語言元素缺一不可的Java,C / C + +做一個大的變化,因此,一般認為Java比C + +更輕便,更精簡

Java的Unicode字元集,C + +通常使用的ASCII字元集。 ASCII是Unicode的子集,程序員習慣於ASCII的感覺之間的差異小於

Java布爾類型不能轉換成其它類型,反之亦然。 C + +最近推出的bool類型的,代表的布爾型,整型作為一個邏輯判斷

模板是「通用??的編程思想,從」面向對象的編程思想是不同的。 C + +已經在很大程度上支持這種新的編程方法,尤其是STL出現
在Java還支持泛型編程,而是說,Sun公司計劃推出的Java模板

C + +支持操作符重載,這是一個非常重要的多的特點,數據抽象和通用的編程工具。它允許四則運算的對象,只是作為基本的數據類型
Java不支持這種多態性,以減少復雜性

兩種語言?支持方法重載(超載)

在C + +,動態地確定哪個函數被調用時,函數必須,以允許運行的虛擬。 virtual關鍵字自動繼承來支持多態

那些不被虛擬成員函??數(包括靜態)靜態綁定在編譯時決定哪一個版本被稱為

Java中,除了靜態的,最終的,私人的,靜態綁定,動態綁定過程的所有方法都
C + +拷貝構造函數「的概念,在三種情況下,自動呼叫

對象初始化一個對象到另一個對象作為參數的函數調用的
對象函數的返回值

通常情況下,當一個對象需要做「深拷貝」(錢可:「C + +程序設計教程),我們需要事先定義的「拷貝構造函數」和「賦值運算符重載函數」和「析構函數」,否則編譯該裝置會自動生成默認的功能「位拷貝」的形式。如果類包含一個指針成員或引用成員,三個默認的功能隱含的錯誤
Java不是語法結構和語義邏輯
C + +支持內聯函數,你能避免的堆棧的函數調用,提高了作業效率

Java調用語義

?+ +構造函數初始化列表中是這樣用的:首先,根據繼承的順序基類構造函數的基類對象的構造函數,然後按語句順序調用成員對象的構造函數構造函數的成員對象
Java的初始化沒有初始化列表這種結構的最後一個成員變數會出現在名單上施工順序的機制
他們基本上是相同的:

靜態變數調用基類的構造函數構造函數的基類對象初始化
靜態初始化塊(Java)的 />實例變數初始化
構造函數的其餘
Java中使用abstract關鍵字修飾抽象方法或抽象類

C + +語法是「純虛函數」,「抽象類「

同時使用一個抽象類作為一個基類繼承層次結構中,提供籠統的概念,實現由不直接實例化的對象
Java的抽象方法和抽象類的子類, final關鍵字在後的類,方法或者變數
最後一類不能被繼承
最後的方法不能被子類重寫的
最後一個變數是一個常數
C + +中的關鍵字,常數可以使用const定義或#define
const成員函數也可以被,即「普通成員函數」,當一個const成員函數來會員資料,或調用一個非const成員函數,編譯器會抱怨
我們不應該成員數據函數聲明為const
static關鍵字在Java和C + +的語法和語義基本相同

靜態成員變數稱為類變數,像所有對象共享
A :: X(C + +):必須在類體外初始化
AX(Java代碼):必須在類體內初始化 BR />靜態成員方法也被稱為類的方法來訪問靜態變數
A :: F()(C + +)
AF()(爪哇)
都有內部類和局部類的語法和沒有友元函數和友元類的概??念,嚴格的語義

Java支持包的外部方法是不允許的類
C + +支持的朋友關鍵字允許外部訪問的私有成員方法訪問類的私有成員,它不是一個純粹的面向對象編程語言
Java類或介面,可用於對公眾的,它可能不會被,而C + +類不能被

3個同種的訪問的語義語法輕微的差異

C + +也繼承許可權修飾符,Java是不是
A類:保護B,公共C( C + +)
A類擴展B(JAVA)
Java的super關鍵字是指對父對象,通常用來調用父類的構造方法或方法
C + +是不是super關鍵字

既此,請參閱對象

Java包的概念,類的組織,易於封裝和部署,但也有利於安全之類的。 C + +沒有一類的概念可以被任何類訪問
可以在HTML文檔中嵌入Java小應用程序,然後通過Web瀏覽器下載和執行
Java API,用於網路通信的特殊支持

C + +沒有內置的網路功能
C + +程序員必須顯式動態內存管理使用delete運算符休息或free()函數,析構函數釋放對象和動態分配的數據空間,否則會造成「內存泄漏」

在Java中,垃圾收集是自動的。當最後一個對象引用變數被釋放時,對象就成為垃圾收集候選人
Java不支持析構函數
的finalize()方法是用來釋放一個先前打開的非內存資源,如文件句柄 /> Java源代碼被編譯成位元組碼(class文件),位元組的二進制代碼是JVM只能識別低級別的代碼,它沒有任何與特定的處理器,安裝操作系統的JVM上解釋轉換成相應的平台的本機代碼,Java是體系結構中立的和

跨平台的C + +直接編譯成二進制機器代碼的基礎平台,由CPU執行平台

因此,解釋執行時,Java程序的速度較慢
Java語言支持多線程,同步和互斥的操作允許並發線程
C + +,這種內在機制

的Javadoc 。exe文件的內容和結構的Java程序文件轉換成HTML格式

⑼ 關於C語言更深入的學習(比如底層、驅動...)

我現在的工作就是用C語言做底層開發的!用的單片機,MIPS核的。
你可以自己買一塊ARM的開發板學習,mini2440應該適合你,500多塊。
那就是嵌入式linux,很有前途,我相信你能學好的,你現在學的比我系統多了,以前我只學了點C和單片機。
學習linux就是最後的深入了,然後再在ARM開發板上實踐,這塊板網上很多賣的,去年這個時候我在淘寶網上買過一塊的。

⑽ 如何用C語言實現面向對象

可以通過以下方法實現面向對象:

1、封裝

封裝就是把數據和方法打包到一個類裡面。其實C語言編程者應該都已經接觸過了,C 標准庫 中的 fopen(), fclose(), fread(), fwrite()等函數的操作對象就是 FILE。

數據內容就是 FILE,數據的讀寫操作就是 fread()、fwrite(),fopen() 類比於構造函數,fclose() 就是析構函數。

2、繼承

繼承就是基於現有的一個類去定義一個新類,這樣有助於重用代碼,更好的組織代碼。在 C 語言裡面,去實現單繼承也非常簡單,只要把基類放到繼承類的第一個數據成員的位置就行了。

例如,我們現在要創建一個 Rectangle 類,我們只要繼承 Shape 類已經存在的屬性和操作,再添加不同於 Shape 的屬性和操作到 Rectangle 中。

3、多態 C++

語言實現多態就是使用虛函數。在 C 語言裡面,也可以實現多態。 現在,我們又要增加一個圓形,並且在 Shape 要擴展功能,我們要增加 area() 和 draw() 函數。

但是 Shape 相當於抽象類,不知道怎麼去計算自己的面積,更不知道怎麼去畫出來自己。而且,矩形和圓形的面積計算方式和幾何圖像也是不一樣的。

4、虛表和虛指針

虛表(Virtual Table)是這個類所有虛函數的函數指針的集合。

虛指針(Virtual Pointer)是一個指向虛表的指針。這個虛指針必須存在於每個對象實例中,會被所有子類繼承。

5、在構造函數中設置vptr

在每一個對象實例中,vptr 必須被初始化指向其 vtbl。最好的初始化位置就是在類的構造函數中。

事實上,在構造函數中,C++ 編譯器隱式的創建了一個初始化的vptr。在 C 語言裡面, 我們必須顯示的初始化vptr。下面就展示一下,在 Shape 的構造函數裡面,如何去初始化這個 vptr。