周遊 4071 字 1個月前

c++

(3 / 4)
⚡ 登入後報錯可獲 3天VIP 免廣告——立即登入

linuxiswritteninC++.

telephonesystems:Ithinkitwouldbealmosteasiertolistthesystemswhicharen'twritteninC++

C++寫出的軟件,還包括:

VLC,著名的開源視頻播放器;

LAMMPS,著名分子動力學模擬軟件,其中包括一部分Fortran代碼;

編程技巧

使用new和delete進行動態內存分配和釋放 運算符new和delete提供了存儲的動態分配和釋放功能。它的作用相當於C語言的函數malloc()和free(),但是性能更為優越。使用new較之使用malloc()有以下的幾個優點:

(1)new自動計算要分配類型的大小,不使用sizeof運算符,比較省事,可以避免錯誤。

(2)自動地返回正確的指針類型,不用進行強製指針類型轉換。

(3)可以用new對分配的對象進行初始化。

使用例子:

(1)int*p;

p=newint];\/\/分配一個含有10個整數的整型數組

delete[]p;\/\/釋放這個指向數組的指針所占內存

(2)int*p;

p=newint(100);\/\/動態分配一個整數並初始化

使用inline內聯函數替代宏調用

對於頻繁使用的函數,C語言建議使用宏調用代替函數調用以加快代碼執行,減少調用開銷。但是宏調用有許多的弊端,可能引起不期望的副作用。例如宏:#defineabs(a)(a)<0?(-a):(a)),當使用abs(i++)時,這個宏就會出錯。

所以在C++中應該使用inline內聯函數替代宏調用,這樣既可達到宏調用的目的,又避免了宏調用的弊端。

使用內聯函數隻須把inline關鍵字放在函數返回類型的前麵。例如:

inlineintAdd(inta,intb);\/\/聲明Add()為內聯函數

這樣編譯器在遇到Add()函數時,就不再進行函數調用,而是直接嵌入函數代碼以加快程序的執行。

使用函數重載

在C語言中,兩個函數的名稱不能相同,否則會導致編譯錯誤。而在C++中,函數名相同而參數數據類型不同的兩個函數被解釋為重載。例如:

voidPutHz(char*str);\/\/在當前位置輸出漢字

voidPutHz(intx,?inty,?char*str);\/\/在x,y處輸入數字

使用函數重載可以幫助程序員處理更多的複雜問題,避免了使用諸如intabs()、fabs()、dabs()等繁雜的函數名稱;同時在大型程序中,使函數名易於管理和使用,而不必絞儘腦汁地去處理函數名。同時必須注意,參數數據類型相同,但是函數返回類型不同的兩個函數不能重載。

用引用(reference)代替指針進行參數傳遞

在C語言中,如果一個函數需要修改用作參數的變量值的時候,參數應該聲明為指針類型。例如:

voidAdd(int*a)

(*a)++;

調用時則使用

Add(&x);\/\/其中x為int或可以轉化為int的類型,如unsignedint,但這時候編譯器通常會給出warning

對於複雜的程序,使用指針容易出錯,程序也難以讀懂。在C++中,對於上述情況可以使用引用來代替指針,使程序更加清晰易懂。引用就是對變量取的一個別名,對引用進行操作,這就相當於對原有變量進行操作。例如使用引用的函數定義為:

voidAdd(int&a)

a++; \/\/a為一個整數的引用

調用時使用

Add(x); \/\/其中x為int

這個函數與使用指針的上一個函數的功能是一樣的,然而代碼卻更為簡潔和清晰易懂。

使用缺省參數

在C++中函數可以使用缺省參數,例如:

)1-=ytni,1-=xtni,rts*rahc(yxzHtuPdiov

)1-==x(fi

;)(xerehw=x

)1-==y(fi

;)(xerehw=x

;)y,x(otevom

;)rts(xHtuP

𝑤𝑡.𝑝𝑜𝑜於源來節章本

:如例,)(yxzHtuP數函用調式方種三有以可

出輸置位前當在,數參省缺用使/\/\;)"\言語++C"\(yxzHtuP

數參省缺用使有沒/\/\;)01,01,"\言語++C"\(yxzHtuP

置位的x定指,數參省缺用使y對/\/\;)01,"\言語++C"\(yxzHtuP

。數參省缺了用使地量大都中碼代的++C在以所,法方的效有了供提題問性活靈和性雜複的大更理處員序程為數參省缺用使。性活靈的大能可儘有具該應數函個一,下況情的常通

。數參的省缺非了義定而數參省缺了用利是還數參個這了義定自是你道知法無器譯編,候時的數參個一中其略省你當則否。數參的省缺非明說再可不就,數參省缺義定始開旦一,即亦。邊右的數參省缺不在現出須必數參省缺的有所,是的明說要需

:如例

確正/\/\)1-=ytni,1-=xtni,rts*rahc(yxzHtuPdiov

誤錯/\/\)rts*rahc,1-=ytni,1-=xtni(yxzHtuPdiov

LTS用使

。會機用重碼代的好更了供提說來庫的成組類和數函由的統傳於比相這,式方的數函版模和類板模了用采都碼代的有所乎幾。rtp_otua如類具工些一括包並,)器代迭(rotareti和)器容(reniatnoc、)法算(mhtirogla:類三為分講上義廣從碼代的LTS,)庫板模準標,yrarbiLetalpmeTdradnatS(LTS

/\/\edulcni#


✅ 付款功能已修復,現在可以正常購買了 — 支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
😤 廣告總在最入戲的時候跳出來?
月付 $5 USD,升級 VIP 後全站所有頁面廣告立即全關——
不是只有這本書,是整個 oop.tw 每一頁、每一章,從此一路讀到底不被打斷。 $5 USD ≈ 一杯珍奶的錢,換一整個月零廣告清爽閱讀 · 隨時可取消
✅ 全站廣告全關 ✅ 工口專區全本解鎖 ✅ 月卡 $5 USD · 季卡 $13 USD · 年卡 $45 USD
⭐ 登入 / 免費註冊後升級
加我 LINE 好友,分享好書不錯過
第一時間獲得新書推薦、書單更新通知
立即加入
上一頁 書頁/目錄
/ 4 頁
下一頁
為本書評分(每位讀者可評一次,提交後無法修改)
發表評論
以 匿名讀者 身份發表
讀者評論