1. ifstream in ("a.txt");
a. for(int a; in >>a..) //流一次讀入乙個字元
b. for(string str ; getline(in ,str);)..//流一次讀入一行
2. char的運算與int可是為一樣
3.char*(char串)和字串陣列型別不同,但是操作上基本一樣,都表示c-串的啟示位址(但是char*的結尾有個空字元,表示結束)
4.
a. 逐字輸入 cin.get()
b. 逐行輸入 cin.getline()
5. 常量,eg: const int a=7; //編譯期間就可以確定
6. a. int a[ ]=
sizeof(a); //計算a 的空間大小
b. sizepof(a[0]) //計算元素a[0]的空間大小,結果以位元組為單位
7. vector,使用下標([n]),和inerator都可以進行操作
8. c++中cast強轉操作方式:
a. int* ip=(int*)&f; //
b. double ip=double(5); //只有內建型別才有此種方式
9.
a. 引用型別就是一種隱性指標,指標自身位址就是所操作的實體的位址,
b. 且與指標最大的區別是引用不能修改自身的位址,也就是說引用賦初值後就不能改變了
10. *s++=*s2++ //後增量++就是在 本語句結束後執行的,所以雖然是先++後*,但是由於是後增++,所以s1,s2指標沒變
11.
vectoradd(..)
vectorc (a.szie);
reurn c; //函式返回時,如果不是引用和指標,就要做對c進行copy,產生乙個臨時量,當函式被呼叫處的表示式結束後,該臨時量也就消失了
12. 函式的宣告和函式的指標
int g(int); //函式的宣告可以省略引數名和函式體
int (*gp)(int) ; //該函式指標為形參的型別是 int(*)(int); 這樣定義只是定義了乙個函式指標實體,並沒有定義函式指標的型別(定義函式指標型別要使用typedef)
typedef int (*fun) (int a); //這樣才是宣告乙個型別為int(*) (int)的函式指標型別
13. 函式宣告的形式
a. int a(int) //可以省略形參名,
b. int (int) //函式名和形參宣告都可以省略(成為無名函式)
// a只是一種函式的型別,b做函式的宣告,也做函式的型別
14. bitset<100> * p=new bitset<100>;
a. p->set() //一般指標所指物件呼叫物件內部方法,成員
b. 所以不用對物件內部成員操作一樣先 (*p),然後操作
15. 棧空間很寶貴,大資料運算-->使用堆空間
16. .cpp檔案中只對引用到的函式或者型別進行include
17. 全域性資料和函式一樣只能一次定義,但是可以多次宣告, 一般在標頭檔案中宣告為 : extend int n=8;
18.a. const int a=3; // 是檔案域的,可以在多個檔案中重複定義,但在同乙個檔案中不能重複定義
b. extend int n=8; // 是程式域,的就不能重複定義
19. 作用域就是名空間,
20. 對的作用域是整個程式範圍,使用new申請到的空間,
21. c++中名空間的定義總是放入標頭檔案中,eg:
a1.h
namespace a1;
# endif //標頭檔案衛士來防止重複宣告
b. a中的全部定義都可以放入標頭檔案中,函式的實現(定義)除外,
c. a中的定義都可以在不同的檔案中重新被定義,(因為屬於內部鏈結)
23. 常成員函式不改變物件的值, void print( ) const;
24.
point a,b,c
point d=a+b+c //過載的point型別的operator +,返回乙個臨時的point(a+b的值)參與與c的相加,當該行表示式結束時,該臨時point銷毀
25. count<26. ostream & operator<<(ostream & o,const point & d)
return o<< ..; //過載<<,必須返回&(引用),否則會拷貝返回一臨時資料
27. 類和函式的實現與定義可以分開實現,
a. 但是型別實現的cpp中要包入相應要實現的類的標頭檔案,
b. 函式實現檔案cpp,中不需要包入相應的標頭檔案
28. 成員內聯函式,一般都直接寫在類定義內部
29. 靜態成員不能放在標頭檔案中,應放在類實現中,(類外實現)
30. 其實函式的實現放在任何cpp中都可以,但是要明確是為那個.h的函式進行的實現,如有同名的函式宣告則應該在實現的cpp中,加上名空間,
名空間::fun();
31. date g; // 無參物件定義
date f();// 返回類物件的無參函式宣告(是個函式的宣告),
32.
a. 在建構函式體中,不能完成對常量成員和引用成員的初始化,
b.如果,建構函式的初始化器中沒有為成員進行初始化,也未在建構函式體中進行賦值,則呼叫該成員的預設建構函式進行構造
33. 靜態物件是檔案作用域物件
34. 指標的空間有型別:指標所指的空間只能放入與指標型別相同的資料,否則要動態強** reinterpret_cast<..>
35.class silly //a與b在模板例項化時,型別必須相同(因為是預編譯階段就要確定)
48. 使用
a. static_cast< >
dynamic_cast< > //進行轉換操作比較安全,不會報錯,最多返回值為0
b. 但是用普通的強轉不會成功的話就會報錯
49.t* const& max( t* const& a, t* const& b)
// t* (指標)加上&(引用).則直接使用實參指標,而不拷貝構造
//t* const& a其實就是t型別指標的引用
50.
a. 形參 const int a //是字面常量,比如5,6
b. const int& a //為常量引用(是變數,只是限定該變數不能被改變) ,*和&在型別定義時都緊跟型別後面(good!)
51. 模板本質不是型別,不能作為形參的型別
52. 模板鑄件可以視為類模板的子類模板,例如:
template
class a是template
class a的模板的鑄件
53. 異常
a. dynamic_cast的轉換型別,若為引用,則轉換失敗後丟擲bad_cast異常
b. 若轉換物件為指標,eg:dynamic _cast,轉換失敗後,返回0
54. 可以使用typeid進行型別比較,eg:
class a;
a a;
if(typeid(a)==typeid(a)) //進行型別比較,可以是物件,指標或者引用
C 學習,總結一
接連幾天的陰雨天氣,現在感覺很悶熱,悶熱的讓人難受。不過現在正處於伏天,這樣的天氣也是正常的。今天學習了什麼新東西呢?來總結一下吧,一是加深一下印象,二是留下一段記憶。一 dll的匯出方式。這裡只把 貼出來了。extern declspec dllexport void msgbox wchar t...
c 學習總結一
詳見 靜態常量與非靜態常量的區別 在建立物件的時候,需要每個成員變數 非靜態 開闢記憶體空間,類變數 靜態變數 則是在類載入的時候就建立好了。用static修飾過的常量會存到常量池裡面。存入的方式是 先到常量池裡面尋找,看是否該常量已經存在,如果存在返回該常量的引用,不存在就在常量池裡面新建乙個常量...
C 模板學習總結(一)
最近公司接到乙個平台專案,平台中涉及到c 11和較多模板方面的 發現同事對c 模板部分的理解幾乎為零,也沒有人了解c 11的語法,所以做了幾次培訓,剛開始在c 11部分的講解尚可,模板部分的培訓效果可以說是一塌糊塗,幾乎沒有人能聽懂我在說什麼,兩次以後參加的人也是寥寥無幾了,事後總結了一下,感覺模板...