1.數組
- 地址連續存放
- 初始化:
- 列出全部初始值后,第1維下標個數可以省略
- 不做初始化,局部變量中為垃圾數據,static變量為0
- 只對一部分進行初始化,其余數值初始化為0
2.動態內存分配:
- new?
- delete?
3.動態創建數組
new p[N]; delele[] p;?
構造函數和析構函數會被調用N次
4.動態創建多維數組
new p[M][N] ;p為指向行的指針
5.動態數組封裝成類
檢查下標越界
6.智能指針:垃圾回收機制,
unique_ptr:不允許多個指針共享資源,可用move()轉移指針
shared_ptr:多個指針共享資源
weak_ptr:可復制shared_ptr,構造和釋放對資源不產生影響
7.vector對象:類模板(數組) 類似動態數組系統封裝成類
作用:封裝任何類型的動態數組,自動創建和刪除; 數組下標越界檢查
定義:vector<類型> 對象名(長度)
使用:對象名[下標];對象名.size();
8.對象的淺層復制和深層復制(復制構造函數)
淺層復制的問題:當原含有指針的對象復制到新對象時,只復制指針地址,若析構原對象,會把新對象同時析構掉。此時需要深層復制
?
9.移動構造
將源對象的狀態轉移到目標對象上,
?
使用場景:返回含有指針成員的對象,
定義:類名(類名&& 對象)
?
10.字符串常量:string類(C++)和字符數組(C風格)
連續順序存放,以‘\0’結尾
string類常用操作:
getline(cin,str,','); 輸入整行字符,第三個參數是字符串結束的標志分隔符
?
?
?
?