這部分是More Effective C++條款1 和條款2的內容,做個筆記
----------------------------------------------------------------------------------------
1. pointer && reference
如果有一個變量,需要(代表)指向一個對象,但是,則最好
如果一個變量,最好使
因此
* pc = & rc = *pc;
這種代碼不能出現。
對於 pointer 和 reference 其中 pointer 可以為 null 並且可以重新賦值,並指向另一個對象,然而 reference 卻總是指向它最初的對象,不能重新賦值。
s1( s2( & rs = s1; * ps = &s1; rs = s2; ps = &s2;
2. C++轉型操作符
C++ 中轉型操作符有4個 static_cast, const_cast, dynamic_cast 和 reinterpret_cast
static_cast 主要用於普通類型轉換,但是不能用於移除常量性或變易性操作
const_cast 主要用於改變表達式的常量性,通過它可以去除變量的 const 屬性,除此之外的其它操作則不能使用
dynamic_cast 主要用來執行繼承體系中 “安全的向下轉型或跨系轉型動作”。也就是說,通過它可以將指向基類的指針或者引用轉換為指向子類的指針或者引用。如果轉換失敗,則會返回空指針(當轉換指針時)或一個exception(當轉換引用時)。
reinterpret_cast 主要用於轉換函數指針的類型。