由c语言转向c++,我们需要做什么?
點擊上方藍字添加關注
在此送大家一份小禮物,公眾號內回復linux0001即可獲得一本Linux電子教程
“c語言和c++到底有什么不同和聯系呢?”
毫無疑問,c語言和c++是兩種不同的語言,但是又有著千絲萬縷的聯系。語法上c語言與c++一脈相承,但是實際用起來效果或者程序結構又完全不一樣,這讓我們產生了不小的疑惑,c和c++到底是什么關系呢?我們應該怎樣去學習這兩種語言?
目錄
一、c語言和c++一脈相承
二、c++面向對象的優勢
三、一些建議
一、c語言和c++一脈相承
首先我們要明確,c語言和c++是有血緣關系的。這個我們可以追溯到早期,在早期c++是沒有自己的編譯器的,c++要通過編譯器編譯成c語言代碼,再由c語言編譯器編譯成機器代碼,隨著后來越來越重視面向對象的語言的發展,c++也就擁有了自己的一套編譯體系。雖然在現在我們盡量把這兩種語言區別開,但是好像編譯器并不給面子,windows下的微軟編譯器(cl.exe),Linux下的G++編譯器,mac下的Clang編譯器都同時支持c和c++編譯,統稱為C/C++編譯器。編譯上的區別我們平時不容易察覺到,但是在實際程序編寫時,我們會發現這兩種語言的基本語法完全一樣,c++完全可以使用c語言的數據類型,沒錯,使用c語言的方式去寫c++完全沒問題,但是我們不能完全這樣做,具體原因我將在下文介紹。
其次我們要知道,c++是作為c語言的一個拓展存在的。在科技不斷發展的今天,c語言已經不能夠完全滿足眾多項目的編程需要,所以科學家為了滿足生產力的需要,c++就應運而生了。我們在說這兩種語言的區別的時候,總會籠統的說一句c語言面向過程,c++面向對象,這是沒有錯的。面向過程的意思就是要求我們去用基本的庫去寫一些功能來完成我們的項目,面向對象的意思是我們去利用前輩留給我們的財產(指各種各樣的庫),去完成程序的設計。其實面向對象不僅僅是指我們會有豐富的庫,這些庫是基于編程語言的優勢完成設計的,那么這樣的話,我們作為使用庫的程序員,同樣可以利用語言的優勢去寫庫留給有需要的人去用,我覺得這才是面向對象語言的核心。就c++來說,由于語言的本身的關系,不足以支持我們去寫一些比較高級的通用庫去完成功能。關于c++是怎么利用自身優勢來完成庫的編寫,我將在下文介紹。
二、c++面向對象的優勢
上文我們留了兩個坑:我們怎樣利用c++的優勢去完成代碼的編寫和我們為什么不能完全按照c語言的方式去寫c++代碼。How?and?Why?
我們首先來說c++的優勢是什么。(本段的內容截取自2月12號的推文《一個好的程序架構應該是什么樣的?》)
c++擁有封裝、繼承和多態三大特性。
1、封裝。封裝指的是我們可以在類中將我們不希望外界調用的函數或者成員變量設置成私有(private)或者保護(protected)成員的形式,而外界需要調用的設置成公共成員(public)的形式,這樣不僅保護了我們的函數不被改變,并且也告訴后來者不必去動我的私有和保護成員的函數和變量。
2、繼承。繼承指的是一個類被定義了之后,可以去由其他有需要的類去繼承父類的成員公共或者受保護成員的變量和函數,這樣使得我們很多函數和變量不必去重復定義,減少代碼量。
3、多態。多態指的是定義在父類內的虛函數,可以被子類重新定義,這個過程我們稱之為“重寫”,這樣做的好處是我們可以不必多次在每個文件中去定義邏輯相同的函數,大大提高了函數的重用。
此外,c++還擁有獨特的命名空間這一概念。這個在解決變量命名重復方面起著很大的作用。
說完這三大特性,我想上面兩個問題也就解決了。由于c++擁有相對于c語言來說的三大特性提供能量,程序必然比啥都沒有的c語言簡潔許多。c++可以對c語言說:你有的我有,你沒有的我還有,氣不氣!
三、一些建議
此處是我在學習c語言和c++初期感到疑惑的一些問題,我把他分享給大家。
1、在學習c++之前我有必要學習c語言嗎?
一口吃不出個胖子,任何事情都要循序漸進。在我來看,確實是有必要的,至少基本語法是要了解的。在學完c語言再去看c++的書你會發現,有大概半本的內容是你在學習c語言的時候學到的,這樣學起來相當輕松。
2、我有c語言基礎,那我該怎么學習c++呢?
在學習c++初期,大部分人犯了同一種錯誤,就是真的把c++當作c語言來學,學來學去學到最后用c++寫出來的代碼還是和c語言一樣的結構。顯然這樣學是不對的。學習c++我覺得切入點一定是從類切入,這樣你學一段時間就會發現,c++和c語言完全不同。類可以說是c++的精髓,不妨在學習的時候貫穿始終。
3、我真的有必要學習c++嗎?
若是有時間我建議學一學,畢竟技多不壓身,但是前提是不要丟了自己很了解的語言,因為那可能是你主要的陣地,這個頂多算加分項。你想想,自己寫的單片機串口程序,上傳到自己寫的上位機,看著自己檢測到的數據編程一幅幅美妙的圖形,這是一個多么幸福的時刻。這段話不僅限送給糾結于學不學c++,其他的語言也一樣。
已經看到這里啦!喜歡本文的小伙伴請點一下右下角的在看鼓勵一下作者吧~
推薦閱讀:
專輯|Linux文章匯總
專輯|程序人生
專輯|C語言
我的知識小密圈
關注公眾號,后臺回復「1024」獲取學習資料網盤鏈接。
歡迎點贊,關注,轉發,在看,您的每一次鼓勵,我都將銘記于心~
嵌入式Linux
微信掃描二維碼,關注我的公眾號
總結
以上是生活随笔為你收集整理的由c语言转向c++,我们需要做什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32固件升级之 hypertrm(
- 下一篇: PDF规范发展历史