《c 必知必會》學習心得 day4

2021-05-23 12:24:53 字數 1749 閱讀 5704

條款42 智慧型指標

是對c++語言的一種擴充套件

智慧型指標式乙個型別,他喬裝打扮為乙個指標,並提供了內建指標無法提供的功能,也就是說,乙個智慧型指標就是使用類的建構函式,析構函式,和複製操作符所所提供的功能來控制或跟蹤他所指向的東西的訪問,

他的應用有資源控制代碼和auto-ptr到stl迭代器從計數指標到指向成員函式的指標包裝器

條款43 auto-prt

auto-prt是乙個乙個類模板,用於生成具體的智慧型指標

auto_ptr原始碼

template

class auto_ptr

;template

inline auto_ptr::auto_ptr(t *p) //讓所有的auto_ptr classes都成為另乙個auto_ptr的友元

:pointee(p) {}

template

template

inline auto_ptr::auto_ptr(auto_ptr& rhs)

:pointee(rhs.release()) {}

template

inline auto_ptr::~auto_ptr()

//這裡不是delete,所以autuo_ptr不能儲存動態陣列

//不是簡單的賦值,而是將實參繫結的物件轉移到當前物件

template

template

inline auto_ptr& auto_ptr::operator = (auto_ptr& rhs)

template

inline t& auto_ptr::operator * () const

template

inline t* auto_ptr::operator -> () const

template

inline t* auto_ptr::get() const

template

inline t* auto_ptr::release()

template

inline void auto_ptr::reset(t *p)    }

條款44 指標運算

兩個同型別的指標可以進行減運算,運算的結果是參見兩個預算的指標之間的元素個數(不是位元組數);

高位址減去低位址是正數;否則是負數;指標不是整數

list的迭代器不是乙個內建指標,而是乙個帶有重建操作符的智慧型指標;

條款 45 模板術語

對於模板的例項化(instantiation)和特化(specialization)不是一回事

對模板的特化是指你以一套模板實參**給乙個模板所得到的東西;

模板的特化可能會也可能不會導致模板的例項化

把模板引數替換為實際型別的過程叫例項化,產成的結果比如:

template <>

class

; 這就是特化了.特化有區域性和完全之分.

條款 46 類模板顯式特化

條款 47 模板區域性特化

不能對函式模板進行區域性特化

條款 48 類模板成員特化

條款 49利用tyoename消除歧義

~~~條款 61關鍵字

剩餘的條款都是講模板的,我的神啊,什麼都看不懂,看來還是要好好學習吧

等專門看一本模板的書在回過頭來看這些條款吧

本書暫時就看到這裡多回顧,好好體會

革命尚未成功,我們仍需努力

加油 ~!!!!

C 必知必會(4)

直接呼叫建構函式是行不通的,然而可以通過使用placement new來哄騙編譯器呼叫建構函式 void operatornew size t,void p throw placement new是operator new的乙個標準的過載版本,也位於全域性名字空間中,但和我們通常看到的operato...

《C 必知必會》讀書筆記4

int f 乙個返回值為int 的函式 int f 乙個函式指標,指向乙個返回型別為int的並且無引數的函式 const int n 12 int a n 首先,提醒這段 在c中不行。這個是乙個具有n個int 元素的陣列 int a n 乙個指標,指向乙個具有n個int元素的陣列。int p n 乙...

MySQL必知必會 學習筆記Day2

基本概念 3 排序檢索資料 1 排序資料 select 列名 from 表名 order by 列名 注 2 按多個列排序 select 列名1,列名2,列名3 from 表名 order by 列名2,列名3 注 3 指定排序方向 select 列名1,列名2,列名3 from 表名 order ...