C++ code example


技巧:

1.using namespace
可以不用再多打std::或其他相關函式

2.ifdef
若ifdef後的東西已經被define,則會繼續執行此條件內部的程式

#ifdef __cplusplus                
   cout << 'C++';

3.Default argument type
函數裡,可以丟預設的值進去,若有送值進去則為此值,若無則用default進去

4.function inline
在進行編譯時,會把inline function直接拷貝進去
--> 執行速度比較快,因為會把函數本體直接copy進去程式內,而不用進出函數,產生stack來記下而使速度下降
(faster, but make the executable bigger)

5.function overloading
函數名稱一樣,但C++可以依據傳進來的type而送入對應的函式內

6.function template
進來的變數型態也命名為變數,則不管喂進來的是什麼型態的變數,都可以繼續往下做

 template <class T>                
 void show(T value){                
    cout << 'input' << value;                
 }

7.Reference
分身
String:
string% penName=author;
-->則%代表了penName就是author,則若之後把penName改掉,author也會被改掉

8.變數交換
若要呼叫function來交換變數的值,要記住C/C++為call by value
錯誤:直接在function內變數交換

void swap00(int a, int b){            
    int temp;            
    temp = a;            
    a = b;            
    b = temp;            
}

正確:
C:

void swap01(int *a, int *b){ //此處的a和b為address,而*則為指標,指向a和b這兩個位址        
   int temp;            
   temp = a;            
   a = b;            
   b = temp;        
}        
swap01(&x, &y)

C++:

void swap02(int &a, int &b){ //利用分身的概念來進行交換      
   int temp;      
   temp = a;      
   a = b;      
   b = temp;      
}      
swap02(x, y)

9.Exception Handling
用try與catch來抓出錯誤
要include <exception>
-->在不同的compiler下,會有不同的結果(如當掉的地方不同)
-->其實可以自己寫exception,用throw與catch,throw會往外面的環境丟,而外面會接住

results matching ""

    No results matching ""