C++筆記

effective c++
OPP:面向對象編程,設計並擴展自己的數據類型!!
爲什麼要使用頭文件,c語言的要求#include <stdio.h> 表示把文件stdio.h中的所有內容拷貝到“這裏”
成員變量,成員函數 都是出現在類定義之中的
sizeof 其作用是返回一個對象或類型所佔的內存字節數,對於結構體、類而言,空的大小不爲0,爲1
數據結構:數組,字符串,鏈表,樹,棧,隊列
字符串可以看成是特殊數組,數組和字符串是兩種最基本的數據結構,採用連續分配內存存儲數字和字符;鏈表和樹面試概率最高,操作時需要用到大量指針(要注意魯棒性),棧是一個和遞歸緊密相關的數據結構,隊列與廣度優先遍歷算法相關
數組的特點:尋址容易,添加刪除困難
鏈表特點:尋址困難,添加刪除容易
數組空間效率不高,因此設置了動態數組,例如vector
數組的名稱就是一個指針!指向數組的第一個元素
c++字符串會多一個空間最後存放\0作爲結束字符
int argc, char *argv[]
鏈表是一種動態數據結構!意思是創建時不需要知道鏈表的長度(這點不像數組—)鏈表是依靠指針進行操作的!
cout cin 很好用,實際上就是iostream類的實例化對象,輸出形式是由變量類型引導的!
函數頭,函數體
類 對象————int a ,成員變量,成員函數,public private
函數聲明(也就是函數原型),函數調用,函數調用,參數傳遞(形參實參)
區分函數原型,函數頭,函數定義
函數調用必須要加上(),例如x = rise()
sizeof()用來看所佔字節數,short 2 int 4 long 4 char 1 float 4 double 8
short 節約內存 long 移植性好 int 最可靠(默認存儲爲int)
在數字後面加L,U,UL表示存儲類型
’ ’ 字符 ” “ 字符串
cout.put()用來字符輸出
成員操作符.
const int MONTH = 12;
浮點運算要比int慢
int/ int = int
數組:同類型變量,字符串;特殊的數組,struct:可以存儲不同類型的數據
sizeof(list) sizeof(list[0])
字符串最後以\0結尾,sizeof(‘a’) != sizeof(“a”),strlen() sizeof()
str輸出的是整個字符串, cout對於字符串就是這樣處理的,輸出字符串內容
而a輸出的是a[0]的地址 cout對於非字符串,就會輸出數組名所表示的地址值,
cin.getline(strname,length)用於行讀取輸入
cin.get() 可以用於按行讀取,也可以進行一個字符讀取,讀取換行符
注意空行輸入和輸入字符過多

cin.get() 可以讀取特殊字符
兩種方法處理字符串:採用數組char str[ ],或者string類變量!!很好用 #include < string >
str.size()
getline(cin ,str)對於string類型讀取一行的方法

struct enum union
enum 定義完成之後就可以用了
enum color {red, blue};//定義了color新類型,並且定義了red blue這樣的符號常量可以直接用!!!
cout << red; ___________輸入0
pointer
指針一定要指向一個確定的地址!!
動態分配內存:new delete成對使用
int * ps = new char[10];
delete [ ] ps;
extern 聲明而非定義變量(不要顯式賦值)
extern int a;
PS:顯示定義就是int a = 10; 隱式定義就是 int a;
const 修飾變量成爲定值 const int a = 19;const還可以聲明指針
如果要是定義struct 指針類型,引用其中的量要用->符號!
struct box * box ; … box->length = 10;
*是指解除引用符號,指針指向內存
使用for來進行循環計數,對於不知道循環次數的採用while
注意:確定中止條件,初始化,判斷之前要更新條件
函數重載語序創建多個同名函數,條件是參數列表必須要不相同
循環可以用來處理逐字符文本輸入
如果處理輸入來自與文件,那麼可以採用檢測EOF方法,輸入可以採用ctrl+z模擬EOF,用cin.fail()檢測EOF
注意:ch = cin.get() 和 cin.get(ch)都可以,但是後者形式是採用的cin格式,可以寫成cin.get(ch1).get(ch2)
利用&&設置取值範圍[10,20]
?:操作符 a? b:c a如果true那麼執行b
switch (條件)
{ case…
case…
}
要習慣!!自定義類型,先定義,再實例化
struct enum union class
break continue兩種跳出方法
break是結束循環,continue是開啓下一次循環
要會用|| 如果左邊條件一直滿足就不會看右邊的
同樣,&&左邊不滿足就不會看右邊的
cin.clear() 用來重置輸入,如果出錯不加這句話那麼就拒絕讀取之後的所有操作

用於處理文件輸入輸出,fstream 定義了ofstream類,要進行一個實例化
ofstream file;
file.open(“sss.txt")

對於類定義的時候,可以採用如下聲明模板:
template < class DataType> //注意,這裏的datatype實際上可以是任何字符,T 啥的都可以,就是代表一個未知的數據類型
class xxx
然後再class中對於變量類型不用具體聲明是哪種,直接用datatype來進行書寫即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章