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