《深入淺出c 之4提高型別安全》

2021-10-06 10:34:32 字數 888 閱讀 7891

c++ 98中的非強型別作用域,允許隱式轉換為整型,占用儲存空間及符號性不確定,都是列舉類的缺點。c++11引入列舉類,即強型別列舉。

強型別列舉優勢:

強作用域,強型別列舉成員的名稱不會被輸出到其父作用域空間

轉換限制,強型別列舉成員的值不可以與整形隱式地相互轉換

可以指定底層型別。強型別列舉預設的底層型別為int,但也可以顯示地指定底層型別,具體方法在列舉名稱後面加上":type",type是除了wchar_t以外的任何整型,如:

enum class weight: char ;
4.2.1 c++ 11的智慧型指標

unique_ptr

不能與其它unique_ptr型別的指標物件共享所指的記憶體。

unique_ptrup1(new int(11));

unique_ptrup2 = up1; //編譯錯誤

unique_ptrup3 = move(up1); //現在up3是資料唯一的upique_ptr智慧型指標。

shared_ptr

實現上採用引用計數,其中乙個shard_ptr指標放棄所有權(reset()),其它shared_ptr對物件的引用並不會受到影響。只有引用計數歸0時,shared_ptr才會真正釋放所占有的堆記憶體的空間。

weak_ptr

可以指向shared_ptr指標指向的物件記憶體,卻不擁有該記憶體(不會增加引用計數),使用weak_ptr成員的lock,返回其指向記憶體的乙個shared_ptr物件,且在所指物件記憶體已經無效時,返回nullptr,這個能夠驗證share_ptr智慧型指標的有效性。

void check(weak_ptr&wp)  else 

}

深入淺出Javascript 型別

js有6種原型資料型別 null,undefined,boolean,number,string,symbol var as null undefined console.log as nullnull.asd uncaught typeerror cannot read property asd ...

C 深入淺出之指標

1 指標陣列 char str 10 指標陣列,顧名思義是乙個陣列,其元素是乙個指標。上述 是定義乙個指標陣列,其陣列元素為指向字元的指標。所謂指標陣列,重頭戲在於陣列,指標可以抽象為修飾符,那麼如何來理解指標陣列呢?很簡單,的優先順序高於 因此先被結合,加上陣列名,就構成了陣列。2 陣列指標 in...

深入淺出c 之 this指標

前言 c語言中的陣列指標和指標陣列 陣列指標,是指向陣列的指標的縮寫 指標陣列,是存放指標的陣列的縮寫。其實很多時候,往往因為簡寫和縮寫帶給我們很多困惑。我曾想過不用簡稱去學習,但在很多時候,我們查詢的書籍文件和文章中還是會頻頻出現這樣的簡稱,所以有必要扣一下字眼了。1 int p 3 優先順序大於...