條款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 ...