• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 編程軟件系列之C++編程技巧(一)

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    C++語言是一個 面向對象 的語言,使用C++編寫的代碼更加簡捷、高效,更具可維護性和可重用性。但是很多人使用了C++語言后卻感到C++與C編程沒有什么區別。這其實是由于對C++語言的特點和特色理解和使用不夠造成的。事實上,沒有任何一個 程序員 使用C語言的編

    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; //刪除這個數組
                 ?。?)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 PutHz?char ?str?? //在當前位置輸出漢字
                void PutHz?int x?int y?char ?str?? //在x,y處輸出漢字

     

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

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

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

       void Add?int ?a? ???a?++??

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

      void Add?int a? ?a++??? //a為一個整數的引用

     

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

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>