W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
Google 用了很多自己實(shí)現(xiàn)的技巧 / 工具使 C++ 代碼更加健壯, 我們使用 C++ 的方式可能和你在其它地方見到的有所不同.
Tip
如果確實(shí)需要使用智能指針的話,
scoped_ptr
完全可以勝任. 你應(yīng)該只在非常特定的情況下使用std::tr1::shared_ptr
, 例如 STL 容器中的對象. 任何情況下都不要使用auto_ptr
.
“智能” 指針看上去是指針, 其實(shí)是附加了語義的對象. 以 scoped_ptr
為例, scoped_ptr
被銷毀時(shí), 它會刪除所指向的對象. shared_ptr
也是如此, 并且 shared_ptr
實(shí)現(xiàn)了引用計(jì)數(shù), 所以最后一個(gè) shared_ptr
對象析構(gòu)時(shí), 如果檢測到引用次數(shù)為 0,就會銷毀所指向的對象.
一般來說,我們傾向于設(shè)計(jì)對象隸屬明確的代碼, 最明確的對象隸屬是根本不使用指針, 直接將對象作為一個(gè)作用域或局部變量使用. 另一種極端做法是, 引用計(jì)數(shù)指針不屬于任何對象. 這種方法的問題是容易導(dǎo)致循環(huán)引用, 或者導(dǎo)致某個(gè)對象無法刪除的詭異狀態(tài), 而且在每一次拷貝或賦值時(shí)連原子操作都會很慢.
雖然不推薦使用引用計(jì)數(shù)指針, 但有些時(shí)候它們的確是最簡單有效的解決方案.
(YuleFox 注: 看來, Google 所謂的不同之處, 在于盡量避免使用智能指針 :D, 使用時(shí)也盡量局部化, 并且, 安全第一)
Tip
使用
cpplint.py
檢查風(fēng)格錯(cuò)誤.
cpplint.py
是一個(gè)用來分析源文件, 能檢查出多種風(fēng)格錯(cuò)誤的工具. 它不并完美, 甚至還會漏報(bào)和誤報(bào), 但它仍然是一個(gè)非常有用的工具. 用行注釋 // NOLINT
可以忽略誤報(bào).
某些項(xiàng)目會指導(dǎo)你如何使用他們的項(xiàng)目工具運(yùn)行 cpplint.py
. 如果你參與的項(xiàng)目沒有提供, 你可以單獨(dú)下載 cpplint.py .
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: