主要學習了內存管理和模塊
c++
內存管理主要包括內存分佈、內存管理方式;模塊主要是函數模板以及類模板。ide
1、內存管理:函數
一、內存分佈:學習
這裏須要注意一下全局變量和全局靜態變量之間的差異:全局變量和全局靜態變量的做用域都是全局的,可是其連接屬性不一樣,全局變量是全部課件可用,全局靜態變量只有當前文件可見。
指針
棧:主要存放非靜態變量、函數參數、返回值等等;而且棧是向下增長。總結也就是存放局部變量。對象
堆:主要存放動態開闢的內存。堆是向上增長。內存
數據區:也叫靜態區,主要存放全局數據和靜態變量。作用域
代碼區:主要存放常量。編譯器
二、內存管理方式it
c語言中主要運用malloc、realloc、calloc、free來管理動態內存管理;c++中引用了new和delete來管理內存。
二者之間的區別是;malloc等是函數,new是操做符;malloc等返回值爲void*,new返回值爲其變量類型指針;malloc參數爲字節數,new後i面跟的是申請對象的類型;malloc申請失敗返回的爲NULL;new申請失敗會拋異常,而且會調用構造函數。
new的實現原理:new申請空間主要借用operator new+構造函數來實現的,operator new是經過malloc+拋異常來實現的,說到底new申請空間也是malloc實現的。
2、,模板
模板原理:編譯器經過調用函數模板或類模板類型,實例化出對應的函數和類。
模板主要分爲函數模板和類模板
一、函數模板
函數模板指的是一個函數家族,該家族與類型無關,在使用時被初始化。(預處理階段就完成)
operator<class t1...class tn>//class能夠替換typename。
二、類模板
operator <class t1...class tn>
class Date{};
其中的Date只是類名,在這裏不表明其類型,類型爲Date<int>//int只是類型的一種,不必定就是此類型。
還有就是類模板的成員函數在類外定義時,須要增長模板參數列表。