原則26:盡可能延后變量定義式的出現時間

Effective C++中第26條原則,總的來說就是這個變量你定義早了,你很難一眼看到這個變量在哪用了;如果你定義早了,這個變量你可能壓根沒用到過,那你就是白白浪費了空間。如果你定義的變量是個對象,那你還要花費構造函數和析構函數的代價。如果在你定義變量之后程序由于異常而中斷了,這個變量你根本沒用著,那你賠的更多了。
再有就是在你定義對象時最好直接給它賦值,因為如果你不這樣做,它是首先調用默認構造函數,然后再調用拷貝賦值函數,但是如果你直接拷貝那就不會調用默認構造函數了,所以這在效率上是一個提升。
本原則還講到一個用于循環的變量是定義在循環內還是外?如果在內,那么你每次都要要調用拷貝構造函數和析構函數,你循環多少次就調用多少次。如果在外,你只調用一次構造和析構函數,循環多少次就調用多少次拷貝賦值操作函數多少次。
作者說這是有條件的,這取決于拷貝構造函數的代價,如果一次拷貝的代價小于一次構造函數+析構函數的代價,那么在外比較好,尤其是在循環次數比較多的情況下,反之在內比較好。不過,從代碼的可讀性和可維護性方面來講,作者比較傾向于在內的做法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容