1.struct成員默認訪問方式是public,而 class默認訪問方式是private粘昨!
2.exit函數(shù)終止程序執(zhí)行會調用析構函數(shù) ,abort函數(shù)終止程序不會調用析構函數(shù)篮奄!
3.靜態(tài)局部變量直到程序終止時才退出另绩!
4.通過public 函數(shù)返回 private成員的引用有可能會破壞類的封裝 ,造成外部變量可以改變類私有成員值旁振!
5.常量對象只能調用常量成員函數(shù)囱淋,常量成員函數(shù)可以有非常量版本重載嗜闻!
6.常量數(shù)據(jù)成員只能在定義時初始化或者在構造函數(shù)里用成員初始化值來初始化 ,不能用賦值語句來初始化斩芭!
7.要在析構函數(shù)里面使用delete來釋放使用 new申請的內存空間乏冀!
8.編寫析構函數(shù)來釋放類中成員所申請的內存空間和使用深拷貝函數(shù)是好的編程習慣蝶糯!
9.operator++()是相當與++d,operator++(int) 是相當于 d++ !
10.如果父類中函數(shù)是虛擬函數(shù) ,那么在每個子類中顯式聲明虛擬函數(shù)是好的編程習慣辆沦!
11.如果類作為基類,其析構函數(shù)要聲明為虛析構函數(shù) ,這樣派生類才可以調用自己的析構函數(shù)昼捍!
12.一個new 就對應一個 delete是好的編程習慣!
13.istream輸入read 是從文件中讀取 ,ostream輸出write 是寫到文件中去肢扯!
14.istream是seekg 重置文件指針位置 ,ostream是seekp, 文件用file.eof()來判斷是否讀取到文件尾部妒茬!
15.assert(條件), 當滿足條件時就不 assert,不滿足條件才會assert!
16.對于不需要修改的變量,使用常量引用來傳遞參數(shù)可以既保證安全性又保證效率蔚晨!
17.在循環(huán)之前調用srand(time(0)),然后在循環(huán)中調用 rand()函數(shù)可以使得每次隨機的結果都不相同乍钻!
18.一維數(shù)組形參如下:int a[],二維數(shù)組形參如下 :int a[][SIZE],第一個[] 是空的,后面必須非空!
19.#define A 10 后面沒有分號铭腕!
20.在局部函數(shù)中用new創(chuàng)建的變量是存在內存中的银择,即便局部函數(shù)執(zhí)行完畢內存變量仍然存在,但是指向它的指針有可能是局部變量累舷,則需要在局部函數(shù)結束前調用 delete釋放內存空間浩考,以免內存泄漏
21.數(shù)組聲明最好用 T *a 來聲明 ,這樣不容易出錯,創(chuàng)建對象最好用 new 而不是直接創(chuàng)建!
22.定義一個類時被盈,析構函數(shù)(釋放資源)和拷貝構造函數(shù)(深拷貝)最好顯示定義析孽!
23.C/C++語言輸入結束符是ctrl+z(windows下 )!
24.C語言的printf(“%.9lf”,a); 比c++的 setprecision(10)來的更加精確只怎,C++有時自動舍入精度袜瞬!
25.理清狀況,邏輯嚴謹身堡,變量初始化邓尤、是還是否、邊界判斷判斷正確盾沫!
26.要使得棧中的基本元素是模板類類型裁赠,必須要定義模板類的一些函數(shù):默認構造函數(shù)殿漠,友員輸出函數(shù)等赴精!
27.用單件模式和全局函數(shù)替代全局變量,以便于拓展和維護绞幌!
28.用const char ptr 表示ptr指向的變量為常量蕾哟。 char const ptr表明ptr 本身為常量是好的編程習慣!
29.const int *i = &a, 只是代表不能通過 i指針來修改,但是可以通過其它途徑來修改 a,例如a=3 谭确!
30.靈活熟練運用語言,如 (a<b?a:b<c?b:c) = val();這句話就將3 個if語句合并成一句話帘营!
31.橋接模式bridge 可以實現(xiàn)接口與實現(xiàn)分離 ,這樣可以減少修改類時需要修改的類的范圍!
32.優(yōu)先級:i++ 高于 ++i 逐哈,注意芬迄,具體運算符優(yōu)先級看下面的運算符優(yōu)先級表!
33.遞歸算法符合大致算法思想就行了 ,不必深究思考,合理就可以了昂秃!
34.在C++ 中使用0來對指針初始化可以保證數(shù)字字面常量 0可以轉換成任何一種指針類型對應的空指針禀梳!
35.非const 對象可以調用 const和非const 函數(shù),但是 const對象只能調用const函數(shù)肠骆!
36.可以使用非const 類型變量賦給 const類型參數(shù)算途,不能用const類型變量賦值給非 const類型參數(shù)!
37.類重載二元運算符時蚀腿,要么作為類的只帶一個參數(shù)的內部函數(shù) ,要么作為類中帶兩個參數(shù)的友元函數(shù)嘴瓤!
38.內建的operator-> 是二元的 ,而重載的operator-> 是一元的 ,如果重載了operator-> 則先調用重載的 ,直到重復調用到內建的operator->才終止!
39.盡量使用STL 是好的編程習慣莉钙!
40.++i返回的是內存變量,可以作為左值也可以作為右值 ,而i++ 返回的是字面量 ,不占內存, 不能作為左值右值廓脆!
41.for循環(huán)中使用continue 不會出現(xiàn)死循環(huán) ,但是while 中使用continue容易出現(xiàn)死循環(huán) ,因為可能i 沒有自加!
42.取最大優(yōu)先分析原則會取最長的類型 ,所以要這么義:list<vector<string> > lovos;右邊兩個>> 之間必須有空格 ,如果沒有則編譯器可能解釋成 >>右移操作符磁玉!
43.對于平凡整型常量,可以用枚舉量來表示狞贱!
44.派生類賦值給基類是不要使用對象繼續(xù)賦值 ,而是使用指針或引用以避免發(fā)生截切!
45.不使用 void * 為類型轉換的中介類型是良好的編程習慣 ,因為void * 會抹除指針的類型信息蜀涨!
46.使用引用類型或標準庫組件以避免引入多級指針的復雜性是較佳的設計瞎嬉!
47.在類對象中盡量避免使用二級指針 ,尤其是在基類指向派生類對象的指針時尤其要注意!
48.在C++ 類中盡量不要重載類型轉換 operator函數(shù), 而是使用有明確含義的如 toInt(),toChar()等函數(shù)替代厚柳!
49.C++中有時在類構造函數(shù)前加上 explicit關鍵字來禁止隱式類型轉換可以減少很多錯誤氧枣!
50.多用引用傳遞參數(shù),用值傳遞時會有大量的復制操作 ,效率很低, 多用引用是好的編程習慣!
51.函數(shù)對象就是重載了operator()的 class對象, 使用函數(shù)對象生成匿名臨時對象是好的編程習慣别垮!
52.使用dynamic_cast<>,static_cast<>,const_cast<>,reinterpret_cast<> 便监!
53.在派生類構造函數(shù)中盡量多使用成員初始化列表 ,靜態(tài)數(shù)據(jù)成員和數(shù)組不允許在成員初始化表中進行初始化 ,可以在函數(shù)體中進行初始化!
54.在類中涉及到指針和引用等 ,最好顯示撰寫深拷貝構造函數(shù)和賦值運算符重載 operator=(),以免出現(xiàn)錯誤碳想!
55.子類在繼承父類時如果重寫父類的虛函數(shù)或者非虛函數(shù) ,要保證在子類中重寫的函數(shù)訪問修飾符和父類結合繼承訪問后得到的訪問修飾符結果一致烧董!
56.在寫拷貝構造函數(shù)和重寫賦值運算符函數(shù)時必須把類中所有變量都用 '='號顯示寫全了,不要寫一部分 ,如果你沒寫, 則編譯器只會調用默認構造函數(shù)進行變量初始化 ,而不會默認用'='號!
57.盡量不要在類中使用靜態(tài)變量 ,永遠不要做運行期靜態(tài)初始化胧奔!
58.對class 對象或者有可能是 class對象的實體進行直接初始化而不是用賦值語句初始化 ,如:N n(0)逊移!
59.搞清楚復制初始化和賦值初始化的不同 ,復制初始化是調用拷貝構造函數(shù)實現(xiàn) ,而賦值是重載'='實現(xiàn)!
60.可以通過在private 區(qū)域聲明拷貝構造函數(shù)來禁止類的復制初始化龙填!
61.對象作為參數(shù)盡量使用引用傳遞 ,其次考慮指針,盡量不要用值傳遞 ,如果不想修改對象可以加 const胳泉!
62.拋出匿名臨時異常對象,并以引用的方式捕獲它們 ,如需重新拋出,則拋出既有的異常對象 ,而非處理原始的異常之后 ,拋出一個新的異常對象拐叉!
63.不要返回函數(shù)作用域內所分配的存儲的引用(返回指針或直接傳值可以) ,會造成內存泄漏!
64.使用類的構造函數(shù)和析構函數(shù)來封裝一些成對的操作如加鎖和解鎖等 ,這樣在函數(shù)執(zhí)行開始時創(chuàng)建類對象 ,使用A a; 而不適A a();或 A()來創(chuàng)建, 在函數(shù)結束前會自動刪除改對象 ,也就實現(xiàn)了開始時調用加鎖操作 ,結束時調用解鎖操作,俗稱 RAII(資源獲取即初始化)扇商!
65.復制auto_ptr 模板實例化對象將指向的對象的控制權轉移 ,然后把復制源設為空凤瘦!
66.永遠不要把auto_ptr 實例化的類型作為 STL容器的基本類型!
67.不要將auto_ptr 對象作為函數(shù)參數(shù)按值傳遞 ,會清空原有對象,造成不可預知的錯誤案铺!
68.不要在虛函數(shù)中提供參數(shù)的默認初始化物蔬芥!
69.訪問層級(public protected private) 對重寫虛函數(shù)沒有任何影響 ,即使public 繼承,你也可以將繼承過來的本來應該是 public的函數(shù)寫到private 作用域中 ,完全可以!
70.派生類中對基類中的非虛函數(shù)的重寫或重載其實是遮掩 ,會將基類中同名的所有虛函數(shù)和非虛函數(shù)全部遮掩 ,使之無效, 這時想要構成重載 ,必須使用using A::fun() 函數(shù)來導入基類中 fun函數(shù)控汉!
71.重載必須在同一個類作用域下才構成重載 ,否則只是遮掩坝茎!
72.重載虛函數(shù)要么對基類中的每一個都重寫要么一個都不要重寫 ,或者使用using A::fun() !