最近在讀高質量C/C++編程指南,我只將一些我自己平時沒有注意的東西記錄下來。
這本書挺好的,推薦大家閱讀。以下是我的讀書筆記:
1.1版權和版本的聲明
example:
/*************************************************
Copyright (C),fmh
File name: xxx.cpp
Author: fmh Version: 1.0 Date: 2012.6.18
Description: xxx的實現程序
*************************************************/
1.2頭文件
防止頭文件被重複引用
#ifndef HEADER_H
#define HEADER_H
#include ...
class A
{
};
#endif
2.2.1儘可能在定義變量的同時初始化該變量
局部變量如果未初始化,可能會導致程序錯誤。
4.4.2如果循環體內存在邏輯判斷,並且循環次數很大,宜將判斷移到
循環體的外面。效率高但程序不簡潔。但效率的提高並不明顯。
4.6.2switch語句不要忘記最後那個default分支。
4.6.3少用、慎用goto語句,而不是禁用。
6.1.1避免函數有太多的參數,參數個數儘量控制在5個以內。如果參
數太多,在使用時容易將參數類型或順序搞錯。
6.3.2return語句不可返回指向“棧內存”的“指針”或者“引用”,因爲
該內存在函數體結束時被自動銷燬。
6.4
函數的功能要單一,不要設計多用途的函數。
函數體的規模要小,儘量控制在50行代碼之內。
不僅要檢查輸入參數的有效性,還要檢查通過其他途徑進入函數體內
的變量的有效性。
6.5使用斷言
在函數的入口處,使用斷言檢查參數的有效性。
7.1內存分配方式有三種
(1)從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,
這塊內存在程序的整個運行期間都存在。例如:全局變量,static
變量。
(2)在棧上創建。在執行函數時,函數內部局部變量的存儲單元
都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧
內存分配運算內置於處理器的指令集中,效率很高,但是分配的內
存容量有限。
(3)在堆上分配,也稱動態內存分配。程序在運行的時候用malloc
或new申請任意多少的內存,程序員自己負責在何時用free或delete
釋放內存。動態內存的生存期由我們決定,使用非常靈活,但問題也
最多。