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會往外面的環境丟,而外面會接住