原创 C++ primer 摘要《多繼承、虛擬繼承》20090203

===18.2 多繼承===基類構造函數被調用的順序以類派生表中聲明的順序爲準private繼承的話,原來父類的public ,protected成員繼承到子類中,併成爲private類型成員; protected繼承的話,原來父類的pu

原创 C++ primer 摘要《函數模板》20090120

===10.1 函數模板定義===模板參數可以是一個模板類型參數,它代表了一種類型也可以是一個模板非類型參數,它代表了一個常量表達式template <class Type, int size> //當函數模板min()被實例化時size

原创 C++ primer 摘要《異常處理》20090122

 ===11.1 拋出異常===異常是個對象,throw 表達式後要跟一個對象    throw popOnEmpty(); //popOnEmpty是個類,這裏使用了構造函數構造對象雖然異常往往是class 類型的對象,但是throw

原创 C++ primer 摘要《函數重載》20090120

===9.1.1 爲什麼要重載一個函數名===我們可能希望定義一組函數它們執行同樣的一般性動作,但是應用在***不同的參數類型***上(注意是參數)===9.1.2 怎樣重載一個函數名===1、如果兩個函數的參數表中參數的個數或類型不同,

原创 static、extern、volatile的用法

static的用法: 靜態變量作用範圍在一個文件內,程序開始時分配空間,結束時釋放空間,默認初始化爲0,使用時可以改變其值。 靜態變量或靜態函數只有本文件內的代碼才能訪問它,它的名字在其它文件中不可見。 用法1:函數內部聲明的static

原创 C++ primer 摘要《操作符重載、用戶定義轉換、重載解析》20090201

===15.1.1 類成員與非成員===1、怎樣決定是把一個操作符聲明爲類成員還是名字空間成員a、如果一個重載操作符是類成員那麼只有當跟它一起被使用的左操作數是該類的對象時,它纔會被調用,如果該操作符的左操作數必須是其他的類型,那麼重載操

原创 函數的參數傳遞

函數的參數傳遞所有的函數都使用在程序運行棧run-time stack 中分配的存儲區,該存儲區一直保持與該函數相關聯,直到函數結束爲止那時存儲區將自動釋放以便重新使用,該函數的整個存儲區被稱爲活動記錄activation record

原创 C++ primer 摘要《extern、變量函數聲明與定義、頭文件、動態分配與釋放》20090119

===***8.2全局對象與函數***=== ===8.2.1聲明和定義=== 在全局域中定義的對象,如果沒有指定顯式的初始值,則該存儲區被初始化爲0 extern 聲明不會引起內存被分配,它可以在同一文件中或同一程序的不同文件中出現多次

原创 C++標準庫智能指針(std::auto_ptr)

 智能指針兩大特性:1.構造棧對象的生命期控制堆上構造的對象的生命期2.通過release來保證auto_ptr對對象的獨權.另必須使用顯示構造   文章結構:一、剖析C++標準庫智能指針(std::auto_ptr)    1.Do y

原创 引用初始化、左值右值、函數數組參數

l-value 與 r-value 區別左值是引用某個對象的表達式,就是可以放在賦值左邊的東西,如:*(p+1)=7, 沒有名字的變量(*(p+1)表達式一定是一個類型的對象)被賦值了,但左值並不一定能被賦值,因爲左值可以引用某個常量。

原创 順序容器list vector

一、結構 vector 表示一段連續的內存區域每個元素被順序存儲在這段內存中對vector 的隨機訪問(比如先訪問元素5 然後訪問15 然後再訪問7 等等)效率很高因爲每次訪問離vector起始處的位移都是固定的但是在任意位置而不是在ve

原创 C++ primer 摘要《類成員》20090126

===13.3.5 const 和volatile 成員函數===const成員函數1.只有被聲明爲const 的成員函數才能被一個const 類對象調用const類對象不能調用非const成員函數(除構造函數析構函數外)2.對於在類體之

原创 C++ primer 摘要《類構造函數、析構函數、初始化》20090130

===14.2 類的構造函數===1.爲構造函數指定實參有三種等價形式// 一般等價的形式Account acct1( "Anna Press" );Account acct2 = Account( "Anna Press" );Acco

原创 C++ primer 摘要《RTTI、異常與繼承、繼承與重載》20090203

===19.1.1 dynamic_cast 操作符===dynamic_cast 操作符可以用來把一個類類型對象的指針轉換成同一類層次結構中的其他類的指針同時,也可以用它把一個類類型對象的左值轉換成同一類層次結構中其他類的引用 如果針對

原创 堆 棧 程序 內存分配 詳解

堆和棧的區別一、預備知識—程序的內存分配    一個由c/C++編譯的程序佔用的內存分爲以下幾個部分    1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。    2、堆