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()改為返回引用, 而不是指針.