C++注意事項

頭文件引用

1、引入順序,先本cpp對應(yīng)的h文件>C標(biāo)準(zhǔn)庫>cpp標(biāo)準(zhǔn)庫>其他庫>自己項目的h文件;
2、系統(tǒng)庫使用<>,其他庫使用引號
3、使用pragma once;

文件組織順序

文件聲明注釋>include gards>引用的頭文件> 自定義類型聲明>函數(shù)聲明(一般函數(shù)、模板函數(shù))>內(nèi)聯(lián)函數(shù)

編碼規(guī)則

1、不應(yīng)輕易省略else,即使什么也不做也應(yīng)該保留后用注釋解釋do nothing
2、注意class與struct的區(qū)別:struct中一般沒有除了構(gòu)造器的方法
3、沒有復(fù)制意義的類應(yīng)該使用DISABLE_COPY_SIGN宏來禁止自動生成構(gòu)造函數(shù)
4、類必須顯示聲明出構(gòu)造函數(shù)
5、由于只有一個參數(shù)的構(gòu)造函數(shù)會被C++編譯器定義為隱形類型轉(zhuǎn)換方法,因此除了復(fù)制構(gòu)造函數(shù)只有一個參數(shù)的構(gòu)造函數(shù)必須聲明為explicit顯示構(gòu)造函數(shù),使得它不用于程序中需要通過此構(gòu)造函數(shù)進行"隱式"轉(zhuǎn)換的情況;
6、禁止由于想要復(fù)用一些方法將沒有『is-a』關(guān)系的類定義為繼承關(guān)系
謹慎overide一個不是虛函數(shù)的方法
7、不允許在h文件中使用using,如果有那么需要考慮系統(tǒng)設(shè)計上是不是解耦工作做的不好。
8、使用lamda表達式的時候不使用默認的補貨方式,且要注意生命周期的問題
9、使用智能指針時慎用auto_ptr
10、慎用沒有邊界檢查的strcpy、strcat、strdum、strintf的方法,且strncpy和strncat也在實現(xiàn)上有問題,缺少結(jié)束符;
11、不要用typedef 去定義結(jié)構(gòu)體

C++風(fēng)格的類型轉(zhuǎn)換

static_cast(常規(guī)沒有損失的類型轉(zhuǎn)換)、
dynamic_cast(基類與子類間的轉(zhuǎn)換)、
const_cast(向const轉(zhuǎn)換)、
reinterpret_cast(重新解讀這段內(nèi)存)

要使用上述四種方法做類型轉(zhuǎn)換,不要用默認的方式,加強可讀性,表達使用意圖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 如果沒能一次成功,那就叫它1.0版吧。 最近寫代碼越來越謹小慎微,生怕犯一些低級錯誤。也簡單記錄了幾個注意事項,權(quán)...
    全方位小白閱讀 111評論 0 1
  • 構(gòu)造函數(shù) 如果沒有聲明構(gòu)造函數(shù),編譯器會定義一個默認構(gòu)造函數(shù)(無參數(shù)、無內(nèi)容),讓你可以不初始化來直接創(chuàng)建對象: ...
    Cloudox_閱讀 746評論 0 0
  • 類的聲明放在頭文件中,類的實現(xiàn)放到cpp文件中 如果要把一個類的函數(shù)定義了內(nèi)聯(lián)函數(shù),可以在聲明中直接定義,或者在實...
    不惜留戀_閱讀 520評論 0 0
  • C++ 虛函數(shù)對于多態(tài)具有決定性的作用,有虛函數(shù)才能構(gòu)成多態(tài)。 虛函數(shù)注意事項 只需要在虛函數(shù)的聲明處加上 vir...
    零歲的我閱讀 281評論 0 1
  • QML 性能上的注意事項和建議 趙者也[http://www.itdecent.cn/u/7b2ff27d6fd...
    趙者也閱讀 16,700評論 1 11

友情鏈接更多精彩內(nèi)容