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