當前位置:編程學習大全網 - 編程語言 - 用簡單易懂的語言描述壹下面向對象?

用簡單易懂的語言描述壹下面向對象?

C++初學者,C語言自認為學的還不錯,經常寫C程序,初略懂C++。

簡單講壹下,我對C和C++的理解。

都說C是面向過程的,C++是面向對象的。但很多人確實很難搞懂這裏面的區別。所以我準備從C和C++之間的差異來講。

C,沒什麽好說的,比匯編方便,匯編都是MOV A,#30。這樣的助記符加參數和地址的形式,而且匯編語言不通用,不同的CPU都有不同的匯編指令,差異很大,比如51和AVR。所以用匯編寫程序,效率非常低,但是比直接寫機器碼好多了,畢竟機器碼都是010101這樣的,寫錯壹個0或1就完蛋,匯編在這方面,還是出眾的。C語言比匯編最大的好處在於,C語言的指令是通用的,數據類型都是int,char,float,這些都是不變的,不管妳用DEV C++寫Windows的應用程序,還是用keil u4編寫51單片機的程序都是幾乎壹樣的,函數的寫法,返回值等都是壹樣的,不壹樣的,可能就是壹些硬件和軟件之間的差異,壹般寫軟件,不太需要管中斷等問題,操作會系統會解決,參數也是操作系統返回給妳的,Windows就是典型的參數返回的方式。而51單片機涉及中斷,所以在中斷的函數上,會讓人有點頭疼,但是總體來說,程序都是壹樣的。C語言編程,無非兩種,壹種直接用main函數從頭寫到尾,要麽分函數寫,壹個功能的實現,甚至壹個數據的處理,都能分成模塊來寫。剛開始,大家壹般都是第壹種,不會用函數,只會用main,結果就是main函數裏,無數個for循環,無數個while循環,程序壹大,變量的名字就麻煩了,要麽要避開重復的名字,因為C語言必須要保證變量名字的唯壹性啊,然後就是壹大堆的i,count這樣的計數用的變量,程序沒有註釋,壹大就完全沒法看,沒人知道妳這個for循環是在做什麽操作,為什麽要這麽做。最後逼迫我們學會函數和返回值的用法,把壹堆的for循環和while循環的操作,放到函數裏去做,並且函數裏有局部變量,只有調用函數的時候,這些局部變量才有用,函數結束,這些變量就回收,讓我們很舒服,函數裏定義了i,只在函數裏使用,另壹個函數裏,也可以有同樣的變量i,他們不沖突,主函數壓力就小了,不用為同壹個類似功能的變量,起什麽樣的名字而發愁了,程序也好寫了,因為主函數只要只要調用壹系列的函數就行了,給個參數就行了,函數的名字都是有意義的英文名字或者拼音(壹般不用拼音寫),即便不寫註釋也能看懂。如果程序出了問題,只要確認哪個函數有BUG,重新檢查和編寫函數就行,比匯編方便多了,至於CPU匯編語言之間的差異,就交給編譯器和編譯器的作者來解決了,提高了效率。

現在來討論C++和C,C++和C的區別,無非在於運算符的重載和類了,函數的重載,C++有,C沒有,這是C++特性,C++的類,C裏是有的,但是他們有差異。C++裏叫類,C裏叫結構體,當然C++裏叫類,那肯定不是純粹的搬C的特性來用啦,人家有擴展,C++的結構體,可以有函數,這是最大的特點,然後是C++的結構體裏的函數和變量可以選擇私有,也可以選擇公開,C語言的結構體,只有變量和指針,沒有函數,變量沒有私有和公開的選項,或者說,只能選擇公開,不能私有。當然,C語言也可以構建結構體裏有函數的形式,就是把指針弄成指向函數的就行,但是壹般C語言書裏都不怎麽講,壹般寫C,也很少有人用。

那麽區別大嗎?可以說,C++說的面向對象,幾乎等於說面向類,而C沒有類,所以不面向對象,C面向函數,C++面向類,類裏面有函數,變量能私有,是類的最大特點,也可以說是對象的最大特點。以前C語言,結構體彌補的是數組的缺陷,數組只能存放壹隊相同類型的變量,比如int[],這個數組裏就全部只能是int類型的數據,不同類型的數據要分開,但是很多情況下,這不好用,比如妳的數據是壹個人的身高,體重,國籍,年齡等數據,妳就很頭疼,有int,有float,有char,他們都是分開的,存放同壹個人的信息要分開放,調用的時候,要按順序調用,很容易出錯,結構就簡單了,把這些信息組成壹個結構體,他們可以放在壹起,調用的時候,直接用名字加變量名,就行,簡單方便,寫起來也容易的多,基本能解決大多數問題。但是結構體的任務很單壹,可以說幾乎和數組的作用是壹樣的,就是存放數據,處理這些數據,還是要建立函數,結構體的數據可以隨便調用和修改,不受限制。那麽就會有問題,第壹個就是函數很多,如果程序非常大,函數非常多,寫主程序的,要記住大量的函數名字,不容易,還要記住這些函數是用來幹嘛的,他們的數據是用的哪個結構體的數據,如果結構壹多,函數成倍增加,程序就難寫了,而且最大的問題是,面向結構體A的函數,壹般不能用於處理結構體B裏的數據吧,有的功能還類似,怎麽辦?功能類似,但是數據結構不壹樣的兩個函數的名字是不能沖突的,那怎麽辦?加結構體的名字,用來區分是可以,但是多了就崩潰,而且處理結構體A的函數,如果寫錯了,調用了結構體B的數據怎麽辦?萬壹結構體B裏沒有這個變量的數據呢?程序會出現大量報錯,頭就很大了。

那怎麽辦呢?用C++的類啊,變量名只給自己的函數用,不給別人的函數,這樣自己的變量就不會被別人修改,導致出錯了,變量是私有的,只有自己的函數才能修改,保證了變量的安全性,而且函數被封裝到類裏,不同的類,有相同的功能的函數,也不怕了,函數受到類的限制,名字可以寫壹樣的,因為類的不同,操作不同,不沖突,寫主程序的也輕松了,函數名不用記太多了,函數名字也不怕沖突了,只要記住類的幹嘛的就行了,類裏面有什麽功能,對應什麽類內的函數就行,比直接記住函數名,調用函數,方便多了。

因為我對C++也不是很精,只能通過對C特性的對比,和寫C程序遇到的壹些麻煩,而C++能極大的解決以前出現的壹些麻煩的角度來理解對象和過程。

個人觀點,僅供參考。

  • 上一篇:如何建立個人網站?
  • 下一篇:簡要說明單片機p0口與其它p口的異同之處
  • copyright 2024編程學習大全網