C++引用優于指針
(轉載請注明來源于金慶的專欄)
在KOK3服務器的崩潰錯誤中, 十有八九是由空指針引起的.
在C語言中, 空指針確實是錯誤的一大來源, 到處是空指針判斷, 可還是會有漏網的.
在C++中, 空指針錯誤可以大大減少, 方法就是盡量使用C++的引用代替指針.
void foo(A* pA)
{
BOOST_ASSERT(pA);
// act on pA...
}
應該改為
void foo(A& rA)
{
// act on rA...
}
如果輸入參數為const, 那更是無疑的應該使用引用作為參數.
除了參數可以轉成引用, 臨時變量也盡量使用引用. 例如:
A* pA = getA();
if (pA)
{
// act on pA...
}
可以改為
A* pA = getA();
if (pA)
{
A& rA = *pA;
// act on rA...
}
如果getA()不會返回NULL, 就將getA()改為返回引用, 而不是指針.