編程軟件系列之C++編程技巧

字號:

C++語言是一個面向?qū)ο蟮恼Z言,使用C++編寫的代碼更加簡捷、高效,更具可維護(hù)性和可重用性。但是很多人使用了C++語言后卻感到C++與C編程沒有什么區(qū)別。這其實(shí)是由于對C++語言的特點(diǎn)和特色理解和使用不夠造成的。事實(shí)上,沒有任何一個程序員使用C語言的編程效率可以超過C++語言的。
    一、使用new和delete進(jìn)行動態(tài)內(nèi)存分配和釋放
    運(yùn)算符new和delete是C++新增的運(yùn)算符,提供了存儲的動態(tài)分配和釋放功能。它的作用相當(dāng)于C語言的函數(shù)malloc()和free(),但是性能更為優(yōu)越。使用new較之使用malloc()有以下的幾個優(yōu)點(diǎn):
    (1)new自動計(jì)算要分配類型的大小,不使用sizeof運(yùn)算符,比較省事,可以避免錯誤。
    (2)自動地返回正確的指針類型,不用進(jìn)行強(qiáng)制指針類型轉(zhuǎn)換。
    (3)可以用new對分配的對象進(jìn)行初始化。
    使用例子:
    (1)int p;
     p=new int[10]; //分配一個含有10個整數(shù)的整形數(shù)組
     delete[] p; //刪除這個數(shù)組
    (2)int p;
     p=new int (100);//動態(tài)分配一個整數(shù)并初始化
    二、使用inline內(nèi)連函數(shù)替代宏調(diào)用
    對于頻繁使用的函數(shù),C語言建議使用宏調(diào)用代替函數(shù)調(diào)用以加快代碼執(zhí)行,減少調(diào)用開銷。但是宏調(diào)用有許多的弊端,可能引起不期望的副作用。例如宏:#define abs(a) ((a)<0?(-a):(a)), 當(dāng)使用abs(I++)時,這個宏就會出錯。
    所以在C++中應(yīng)該使用inline內(nèi)連函數(shù)替代宏調(diào)用,這樣既可達(dá)到宏調(diào)用的目的,又避免了宏調(diào)用的弊端。
    使用內(nèi)連函數(shù)只須把inline關(guān)鍵字放在函數(shù)返回類型的前面。例如:
    inline int Add(int a,int b);//聲明Add()為內(nèi)連函數(shù)
    這樣編譯器在遇到Add()函數(shù)時,就不再進(jìn)行函數(shù)調(diào)用,而是直接嵌入函數(shù)代碼以加快程序的執(zhí)行。