第一周
一笔咽、導讀
?
二耽梅、conversion function 轉(zhuǎn)換函數(shù)
轉(zhuǎn)換函數(shù)語法
operator double() const{} 通常是const(不是const也可以編譯通過)
1.函數(shù)名稱
2.沒有返回類型鞠值,返回類型就是函數(shù)名稱中的類型
三、non-explicit one argument ctor
只有一個實參就可以
non-explicit
Fraction(int num,int den=1):m_numerator(num),m_denominotor(den){}
?
explicit-one-argument ctor
explicit只用在構(gòu)造函數(shù)的前面(還有模板的一小部分)
?
四卑惜、pointer-like classes
1.最經(jīng)典的就是智能指針
兩個操作符重載 *和 ->
c++語法:->箭頭符號作用的結(jié)果可以繼續(xù)作用下去
sp->返回結(jié)果是px,->已經(jīng)消耗掉睡榆,但是px還可以繼續(xù)->
2.迭代器
五卵牍、function-like classes
仿函數(shù)
能夠接受()操作符
Gun C
select1st<Pair>()()
?
標準庫中瓮栗,仿函數(shù)所用的奇特的base classes
大小是0削罩,沒有函數(shù)
unary_function
binary_function
六、namespace經(jīng)驗談
?
七费奸、class template
?
八弥激、function template
類模板使用時需要指明type,函數(shù)模板使用時不用指明type
編譯器會對function template進行實參推導
九货邓、member template
?
?
標準庫中很多類的構(gòu)造函數(shù)使用成員模板
十秆撮、specialization 模板特化
十一四濒、??? partial specialization? 模板偏特化
1.個數(shù)的偏
左邊到右邊换况,不能跳
2.范圍的偏
十二、??? template template parameter? 模板模板參數(shù)
template<typename T> 中typename和class共通盗蟆,歷史原因戈二,原來沒有typename只有class。
十三喳资、??? 關(guān)于C++標準庫
??? 標準庫中的容器和算法都自己試一遍
十四觉吭、??? 三個主題
C++11
第一步,確認支持c++11:macro_cplusplus
1.variadic templates
數(shù)量不定的模板參數(shù)
2.auto
?? C++的語法糖
3.ranged-base for
{}形成一個容器(c++11)
遍歷容器方便很多
以前使用iterator或者foreach遍歷容器
編譯器怎么實現(xiàn)引用:都是用指針做的
十五仆邓、??? Reference
從邏輯上r代表x鲜滩,從實現(xiàn)上r是一個指針
1.一定有初值;
2.不能再變节值;
3.Object和其reference的大小相同徙硅,地址也相同(全都是假象)
Reference的常見用途
Reference通常不用于聲明變量,而用于參數(shù)類型和返回類型的描述搞疗。
?
函數(shù)簽名
const是不是函數(shù)簽名的一部分嗓蘑?YES!
?
十六匿乃、??? 復合&繼承關(guān)系下的構(gòu)造和析構(gòu)
??? 參看第一部分的內(nèi)容桩皿。