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

來源:互聯網
上載者:User

C++語言是一個物件導向的語言,使用C++編寫的代碼更加簡捷、高效,更具可維護性和可重用性。但是很多人使用了C++語言後卻感到C++與C編程沒有什麼區別。這其實是由於對C++語言的特點和特色理解和使用不夠造成的。事實上,沒有任何一個程式員使用C語言的編程效率可以超過C++語言的。

一、使用new和delete進行動態記憶體分配和釋放

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

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

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

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

使用例子:

(1)int p;
     p=new int[10]; //分配一個含有10個整數的整形數組
     delete[] p; //刪除這個數組
   (2)int p;
     p=new int (100);//動態分配一個整數並初始化

二、使用inline內連函數替代宏調用

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

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

使用內連函數只須把inline關鍵字放在函數傳回型別的前面。例如:

inline int Add(int a,int b);//聲明Add()為內連函數

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

三、使用函數重載

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

void PutHzchar str //在當前位置輸出漢字
void PutHzint xint ychar str //在x,y處輸出漢字

使用函數重載可以協助程式員處理更多的複雜問題,避免了使用諸如intabs()、fabs()、dabs()等繁雜的函數名稱;同時在大型程式中,使函數名易於管理和使用,而不必絞盡腦汁地去處理函數名。

四、使用引用(reference)代替指標進行參數傳遞

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

   void Addint a a++

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

  void Addint a a++ //a為一個整數的引用

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.