程式碼規範
38. 將IDE的制表符(TAB) 設置為 4 個空格
68. 函數必須將返回值明確列出(不要交給編譯器處理)
typedef
3. 代表類型的的名字必須首字母大寫,其他字母大小寫混合
Ex: typedef ........ NewTypeName
#define
5.命名常量(包括枚舉enum) 須由大寫並由底線分割
Ex: #define MAX_ITERATION 30
bool 型別 與 int 型別
26. bool變數/函數 命名應使用前綴 is
Ex: isSet, isVariable 有可能也使用 has can should
39.斷行需明顯:逗號or運算符後換行,新行要對齊
型別轉換(type conversion)
C style:
(type) value
Ex: (int) 2.5
C++ style:
static_cast<type> value
Ex:static_cast<double>(1)/2 --> 0.5
45. 型別轉換需顯式聲明,永遠不要依賴隱式轉換
Ex: float value = static_cast<float>(int value) (o)
float value = int value (x)
變數初始化
int x = 1; C & C++
int x(1); 物件導向style
注意: 不能先宣告變數 在使用物件導向style
Ex: intx; x(1); [Error]
一元作用域解析運算符 (Unary Scope Resolution)
int v1 = 10;
int main(){
int v1 = 5;
std::cout << v1 << std::endl;
std::cout << ::v1 << std::endl; (全域v1)
}
多載函式 (overloading Function)
只看 參數的個數,類型,次序 而不是 return值
混淆調用(Ambigous Invocation)
def:函數調用時,有多個匹配項編譯器無法確定
函數預設參數(Default Arguments)
定義時,預設值應後置
Ex: void t1(int x, int y=0, int z) (x)
void t2(int x, int y=0, int z=0) (o)
調用時,實參數應前置
Ex: t1(1, ,20) (x)
t2(1,2) (o)
注意: 函數預設必須將宣告與定義寫在一起,不可分開
內聯函數(Inline Function)
用 function
優:易讀,易維護
缺:重複呼叫會增加性能開銷
Inline function
目的:減小開銷
方法:將函式插入調用處(利用空間換時間)
結果:program 變大
注意: 函式宣告inline 僅僅是請求編譯器,並不是命令
參考 (Reference)
參考又稱為別名
Ex: int x; int& rx = x;
利用參考的操作實際上就是用於原變量
51. C++ pointer and reference 應該靠近型別 而非變數
Ex: float* x (o) float *x (x)
int& x = y; (o) int &x = y (x)
Pass by Reference : Reference 可做函數參數,調用使用普通變量即可
function: swap(int& a, int& b);
調用時: swap(num1, num2);
& 有三種意義 取址 參考 關係運算子 利用規範來分辨
緊靠型別多參考 (為何是多? 因為沒按照規範就要自己判斷)
靠近變數多取址
夾在中間是關係
70. C++中 0完全代替了NULL 廢止了NULL