礦坑系列 ── Concept と SFINAE と Detection Idiom
主要的目的是偵測一個傳進 function template 的 argument 是否符合我們對 template parameter 設定的條件,之後看你要給 error 還是利用這個條件去做模板特化或分支,在對物件或函式做封裝的時候蠻好用的
主要的目的是偵測一個傳進 function template 的 argument 是否符合我們對 template parameter 設定的條件,之後看你要給 error 還是利用這個條件去做模板特化或分支,在對物件或函式做封裝的時候蠻好用的
C\+\+ 的 new 是個能幫助我們操作記憶體的工具,傳統的 pure C 內也有類似的工具 malloc,然而由於 C\+\+ 語言上內建多支援了物件導向的特性,導致 new 比 malloc 多做了一些事情,本文整理了兩者的相關知識
就... 介紹,當初演講的講稿整理出來的介紹文
基本上就是把那些篇幅不長,但又很有趣的東西另外開一個地方放
有時候某些型態的物件的 copy 非常的貴,所以我們不會希望他在每個地方都被複製一次,造成效能上的損失,這時我們可以使用 explicit 來看我們是否有不小心造成物件的複製
核心概念是編譯器通常會先分配一小塊 stack 段的記憶體給 std::string,如果字串夠短就可以直接塞到這個 stack 內,如果字串太長,塞不下,就拿這個空間放 pointer,指向 heap 段存取的字串
主要原因是因為 const 會破壞移動,所以整理了幾個例子
物件導向有三個很重要的特性:資料抽象化、繼承與動態連結。資料抽象化上章有提到,就是將介面與實作分開;繼承的話則可以幫助我們建立相似模型之間的關係;動態連結則可以讓我們使用某些型態的物件時不用在意其內部細節
Class 背後最核心的概念是資料的抽象化與資料封裝。這些是一種程式設計上的技巧、想法,其清楚區分了介面和實作的不同,介面是與使用者直接互動的運算,實作則是利用了 Class 內的資料成員與成員函式來寫出的演算法,而封裝則是強制分開了介面與實作,實作會被隱藏,使用者只看的到介面,但看不到實作
本文講解了函式和與函式的記憶體配置