講c基礎(chǔ)語法回顧第一_第1頁
講c基礎(chǔ)語法回顧第一_第2頁
講c基礎(chǔ)語法回顧第一_第3頁
講c基礎(chǔ)語法回顧第一_第4頁
講c基礎(chǔ)語法回顧第一_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

中科研CASoft軟件工程師培訓(xùn)講義語音網(wǎng)絡(luò)聊天第1章C/C++基礎(chǔ)語法回顧王俊峰中科天地軟件人才培訓(xùn)中心Created

byJunfeng

Wang本講重點提要¤

C和C++的區(qū)別¤

C++面向?qū)ο蟮囊恍┗靖拍睢?/p>

從C向C++的轉(zhuǎn)變途徑C和C++的共有的特點¤

C和C++共有的特點:程序短小、語法簡潔、功能強大。這也是C系列語言區(qū)別與其他語言的一個顯著的特點。C系列語言在對內(nèi)存和硬件的訪問方面無與倫比的優(yōu)越和方便,所以,它們是開發(fā)系統(tǒng)級的應(yīng)用的首選語言。C和C++的應(yīng)用領(lǐng)域工業(yè)控制領(lǐng)域(單片機)驅(qū)動程序(電腦硬件驅(qū)動)系統(tǒng)級應(yīng)用(一些OS)C和C++的區(qū)別¤C++增加了一些新的運算符:new和delete等。使得C++在內(nèi)存管理方面更為強大。參見本章例子:動態(tài)內(nèi)存分配.cpp¤

為了增強安全性,變化為強類型語言。參見本章例子:C和C++中的類型強制性比較引進了引用的概念,使對內(nèi)存的訪問更加直觀和安全。–

參見本章例子:引用類型.CPPC和C++的區(qū)別(續(xù))C++對于函數(shù),擴充了功能:允許重載,允許默認(rèn)參數(shù),內(nèi)聯(lián)函數(shù)等。參見本章例子:函數(shù)名重載.CPP參見本章例子:可變參數(shù).CPP和預(yù)設(shè)參數(shù).CPP參見本章例子:內(nèi)聯(lián)函數(shù).CPPC++中可以隨時定義變量,增加了方便性。參見本章例子:c中變量聲明位置.C參見本章例子:c++中變量聲明位置.CPPC++的獨有的特點¤

異常處理機制¤

運行時刻類型識別RTTI¤

名字空間¤

內(nèi)置布爾數(shù)據(jù)類型¤

新的強制轉(zhuǎn)換方式C++中的亮點技術(shù)¤

模板template¤支持面向?qū)ο髈bject-oriented

和基于對象object-based程序設(shè)計所需要的類class機制¤

重載函數(shù)的解析機制¤

更加全面的庫從C轉(zhuǎn)向C++之路¤

對每個人來說,習(xí)慣C++需要一些時間,對于已經(jīng)熟悉C的程序員來說,這個過程尤其令人苦惱。因為C是C++的子集,所有的C的技術(shù)都可以繼續(xù)使用,但很多用起來又不太合適。例如:C++程序員會認(rèn)為指針的指針看起來很古怪,他們會問:為什么不用指針的引用來代替呢?C是一種簡單的語言。它真正提供的只有有宏、指針、結(jié)構(gòu)、數(shù)組和函數(shù)。不管什么問題,C都靠宏、指針、結(jié)構(gòu)、數(shù)組和函數(shù)來解決。而C++不是這樣。宏、指針、結(jié)構(gòu)、數(shù)組和函數(shù)當(dāng)然還存在,此外還有私有和保護型成員、函數(shù)重載、缺省參數(shù)、構(gòu)造和析構(gòu)函數(shù)、自定義操作符、內(nèi)聯(lián)函數(shù)、引用、友元、模板、異常、名字空間,等等。用C++比用C具有更寬廣的空間,因為設(shè)計時有更多的選擇可以考慮。轉(zhuǎn)向C++的建議¤

盡量用const和inline而不用#define這句話最好解釋為:“盡量用編譯器而不用預(yù)處理”,因為

#define經(jīng)常被認(rèn)為好象不是語言本身的一部分。這是問題之一。再看下面的語句:#define

ASPECT_RATIO

1.653編譯器會永遠(yuǎn)也看不到ASPECT_RATIO這個符號名,因為在源碼進入編譯器之前,它會被預(yù)處理程序去掉,于是ASPECT_RATIO不會加入到符號列表中。如果涉及到這個常量的代碼在編譯時報錯,就會很令人費解,因為報錯信息指的是1.653,而不是

ASPECT_RATIO。如果ASPECT_RATIO不是在你自己寫的頭文件中定義的,你就會奇怪1.653是從哪里來的,甚至?xí)〞r間跟蹤下去。這個問題也會出現(xiàn)在符號調(diào)試器中,因為同樣地,你所寫的符號名不會出現(xiàn)在符號列表中。解決這個問題的方案很簡單:不用預(yù)處理宏,定義一個常量:const

double

ASPECT_RATIO

=

1.653;轉(zhuǎn)向C++的建議(續(xù))¤

盡量用<iostream>而不用<stdio.h>是的,scanf和printf很輕巧,很高效,你也早就知道怎么用它們,這我承認(rèn)。但盡管他們很有用,事實上scanf和printf及其系列還可以做些改進。尤其是,他們不是類型安全的,而且沒有擴展性。因為類型安全和擴展性是C++的基石,所以你也要服從這一點。另外,scanf/printf系列函數(shù)把要讀寫的變量和控制讀寫格式的信息分開來,就象古老的FORTRAN那樣。是該向五十年代說訣別的時候了!不必驚奇,scanf/printf的這些弱點正是操作符>>和<<的強項:轉(zhuǎn)向C++的建議(續(xù))¤

盡量用new和delete而不用malloc和free假設(shè)用兩種方法給一個包含10個string對象的數(shù)組分配空間,一個用malloc,另一個用new:string

*stringarray1

=

static_cast<string*>(malloc(10

*sizeof(string)));string

*stringarray2

=

new

string[10];其結(jié)果是,stringarray1確實指向的是可以容納10個string對象的足夠空間,但內(nèi)存里并沒有創(chuàng)建這些對象。而且,如果你不從這種晦澀的語法怪圈(詳見條款

m4和m8的描述)里跳出來的話,你沒有辦法來初始化數(shù)組里的對象。換句話說,stringarray1其實一點用也沒有。相反,stringarray2指向的是一個包含10個完全構(gòu)造好的string對象的數(shù)組,每個對象可以在任何讀取string的操作里安全使用。C++中的面向?qū)ο蟾拍睿^承¤

繼承是面向?qū)ο蟮淖罨镜奶卣髦?,繼承大大提高了軟件的復(fù)用技術(shù)。C++對面向?qū)ο蟮睦^承機制進行了很好的支持:比如:動物是一個基類,那么魚、牛、羊等等都是廣義上的動物之一,它們都是動物,就應(yīng)該具備動物的一切特點,比如:吃、呼吸、行走等。那么,我們可以設(shè)計一個基類Animal(動物),讓基類包含基本的功能(或功能定義)。后繼的類都從它繼承,那么后繼的類自動就具有了基類Animal的一切特征。這就是面向?qū)ο蟮睦^承。參見本章例子:C++中的繼承C++中的類定義技巧¤

在用C++進行類的定義時,要考慮構(gòu)造函數(shù)的定義(如果沒有定義構(gòu)造函數(shù),系統(tǒng)會為我們自動生成一個),構(gòu)造函數(shù)可以定義多個(這就是重載)。當(dāng)然,構(gòu)造函數(shù)也可以是接受一個同類的一個對象作為參數(shù)(這就是拷貝構(gòu)造函數(shù))。類的成員可以是公有、私有、保護,甚至是友元。類的成員可以是靜態(tài)的(類的成員變量),也可以是動態(tài)的(類的成員函數(shù))。定義類的成員是一個不斷基類經(jīng)驗的過程。合適的類成員屬性是保證類的質(zhì)量的關(guān)鍵所在。參見本章例子:C++中的類定義C++宏的使用-避免重復(fù)定義¤

在用C++進行大的項目開發(fā)時,不可避免地會出現(xiàn)對象的重復(fù)定義,這時我們可以巧妙地利用合適的宏定義,避免出現(xiàn)錯誤。參見本章例子:使用宏定義避免錯誤C++宏的使用-避免重復(fù)定義¤

在用C++進行大的項目開發(fā)時,不可避免地會出現(xiàn)對象的重復(fù)定義,這時我們可以巧妙地利用合適的宏定義,避免出現(xiàn)錯誤。參見本章例子:使用宏定義避免錯誤C++的其他特征介紹¤

C++中的虛函數(shù)。虛函數(shù)的特征是使用修飾符Virtual修飾的函數(shù)。虛函數(shù)是實現(xiàn)多態(tài)的手段。參見本章例子:虛函數(shù)的數(shù)據(jù)封裝.CPPC++中的純虛函數(shù)。純虛函數(shù)就是沒有實現(xiàn)代碼的函數(shù),它主要是用在提

供后代類一個統(tǒng)一的訪問接口。它的實現(xiàn)在后代類中。而且,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論