高質量編程

1.類型轉換:由於派生類和基類之間的關係,C++保證了派生類對象必須保證其基類子對象的完整性. 2.強制轉換: 例子:double d3=1.25e+20; double d4=10.35; int i2=(int)d3; int i3=(int)d4; 上述代碼的問題,i2會溢出,double的長度大於int類型,i3得到的結果是10,其截斷內存。 3.強制轉換: double d5=1000.25; int *pInt=(int*)&d5; int i4=100; double *pDbl=(double*)&i4; 上述代碼的問題:int *pInt=(int*)&d5;會截取內存,則所得到的結果就不是1000了,而只是其內存的前四個字節, 後面的double *pDbl=(double*)&i4;會擴充內存,則所得到的結果是八個字節,也不是原來的100了。 4.c++基類和派生類之間的指針轉換同樣存在安全隱患。 Base objB2; Derived *pD2=(Derived*)&objB2; 因爲pD2指向的對象根本就沒有成員M_C的空間。 5.不可以把基類對象直接轉換成派生類對象,無論是直接賦值還是強制轉換,因爲這不是自然地。 對於基本類型的強制轉換一定要區分值的階段與內存截斷的不同; 如果堅持強制轉換,必須同時確保內存訪問的安全性和轉換結果的安全性。 6.運算符的優先級: 1.[]、()、->其實根本就不是什麼運算符其級別最好 2.單目運算符如! + - ++ -- &(取地址) *(反引用) 3. 四則運算* / % + - 4.位移運算<< >> 5.比較運算< <= > >= 高於== != 6.與非或 7.三目運算 ? : 8.賦值運算符 9.逗號運算符 7.c++多維數組而言,“先行後列”遍歷效果肯定好於“先列後行”主要是由於其存儲時是按照先行後列的順序存儲的,這樣其cache命中率較高
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章