程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> Effective C++ 讀書筆記

Effective C++ 讀書筆記

編輯:關於C#
 

列舉的55條改善c++程序設計的條款,條條見解獨到,雖然有些條款過於吹毛求疵,不近乎人情,但是對於深刻理解c++程序設計語言卻有著莫大的幫助,結合自己的實踐經驗,下面列舉幾條本人認為比較重要的條款,也算是對本次閱讀的一個總結吧。

1、盡可能的使用const
const可以對一個對象施加約束,使得該對象不允許被改動,因此當你認為一個對象不該被修改時就應該添加const修飾符,這是一個好的編程習慣,雖然不是強制要求,但是它可以讓編譯器來幫助你確保這個約束不被違反,讓編譯器來幫助你,何樂而不為呢。
 

2、為多態基類聲明virtual析構函數
當一個類被設計用來做基類時,它的析構函數必須保證聲明為虛析構函數,這主要是為了避免c++動態綁定特性有可能帶來的對象“局部銷毀”現象,至於為什麼要這麼做,可以去看書,書上講的很詳細。
 

3、別讓異常逃離析構函數
這條條款對於喜歡使用c++異常的同學來說就很重要了,一般來說,在c++中很多對象的銷毀和資源回收都會在析構函數中進行,若析構時拋出了異常,就有可能使得資源無法順利回收,造成內存洩露等。
 

4、用對象來管理資源
其實這條條款也就是c++智能指針的基本設計原理,它依賴c++的析構函數自動調用機制來保證資源被正確釋放,在構造函數中獲得資源(比如new)並在析構函數中釋放資源(比如delete)。
 

5、以引用傳遞來代替值傳遞
在c語言中,函數參數的傳遞都是通過拷貝實際參數的副本進行的,在c++中,這往往會帶來昂貴的代價,假如一個參數對象很大這樣的機制就會引起大量的構造和析構開銷,而通過引用傳遞參數就不會有這樣的問題,當然也有例外,對於內置類型,以及STL的迭代器和函數對象還是用值傳遞比較適當。
 

6、當函數必須返回對象時千萬別返回其引用
本人認為這條條款非常重要,它其實也指示了程序員千萬不要濫用引用及指針,記住:絕對不要返回引用或者指針指向一個局部棧對象或者返回一個引用指向堆對象,又或者是返回引用或者指針指向一個本地靜態對象,而有可能同時需要多個這樣的對象。
 

7、將成員變量聲明為private
封裝,是面向對象程序設計的基本要素,這條條款不單單只適用於c++,它同樣適用於其他面向對象程序設計語言,本人認為一個合格的面向對象程序員必須遵循這條條款
 

8、合理使用inlining函數
同樣的,千萬不要濫用inlining函數,雖然它減少了函數調用的開銷,卻可能引起代碼膨以及代碼不好升級維護等問題,作者建議將inlining用在那些頻繁被調用的小型函數身上,它可使潛在的代碼膨脹問題最小化,程序速度的提升機會最大化。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved