——返回局部變量的引用或者指針是錯誤的,返回值是正確的,由於它會返回一個副本;編程
——成員函數指針是強類型的,進行轉換是須要顯示轉換,靜態成員函數能夠直接用普通函數指針來存取;函數
——靜態成員函數不能使用virtual、const、volatile修飾,靜態函數是類的不存在虛函數表因此不能是virtual的(其餘兩個不知道爲何);學習
——靜態成員函數只能操做類變量,沒有this指針;this
——dynmaic_cast只支持指針和引用的類型轉化,且作運行時類型檢測,其餘轉化不會;spa
——sizeof的結果與字節對齊和pack有關;指針
——sizeof一個空的類結果是1;視頻
——下面代碼只能解決重複包含,不能解決重複定義;blog
#ifndef MACRO#define MACRO#endif教程
——goto是個好東西;字符串
——模版的export關鍵字不被支持,分離定義模型不被支持;
——boost庫很好用,可是很容易用錯;
——本身不能肯定的運算符優先級就用括號吧;
——string::c_str()返回的是const char*;
——inline是給編譯器的建議,函數放在頭文件中並在定義時添加,在類聲明時直接寫的方法體,等同與添加了inline內聯;
——struct、class、enum、union最後面記得加分號,namespace最後沒有分號;
——默認參數是聲明時使用的,默認參數必須在後邊;
——virtual 在父類中聲明纔有意義,只在子類中聲明是錯誤的。子類中的virtual是無關緊要的,通常加上用來標示一下;
——extern 用在聲明時,表示在別處定義了,在.h中定義的函數默認是extern的,可是變量有本身添加;
——C++03類模板能夠有默認參數,可是函數模版不能有默認模版參數,C++0X提供了函數默認模版參數的支持;
——static在文件中修飾變量說明這個變量在其餘文件中是不可見的;
——switch語句的case只能是常量數字(枚舉)或者字符;
——有符號的移位運算和無符號的移位運算是不一樣的,而且分爲算術移位和邏輯移位;
——宏定義時添加下面代碼來防止產生錯誤;
#define MACRO do{//TODO}while(0)
——const的類成員函數在初始化列表中初始化,static的成員函數須要在類外定義初始化,const static能夠直接在類中初始化也能夠和static同樣在類外定義時初始化;
——只是返回值不一樣不能做爲重載;
——二義性問題須要注意;
——delete NULL是合法的且不會產生錯誤的;
——對指針進行加減法的步長取決於它指向的類型;
——採用加法來交換兩個數值容易產生溢出,能夠採用異或來作;
——直接賦值的char指針是常量字符串,不能修改;
——傳遞進函數的指針內容能夠修改,對它自己的修改是錯誤的,須要時須要傳遞指針的指針;
——注意區別編譯器提供的擴展;
——C++比C有更強的類型檢查,有些在C中不須要類型轉換的,在C++中須要顯示的使用類型轉換;
——函數返回值和參數的傳遞都會產生副本;
另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
免費學習資料: