原创 C++ Primer第五版筆記——tuple類型

tuple是類似pair的模板。每個pair的成員類型都不相同,但每個pair都有兩個成員。tuple類型的成員類型也都不相同,但一個tuple可以有任意數量的元素。每個確定的tuple類型的成員數目是固定的,但是兩個tuple類型的

原创 C++ Primer第五版筆記——bitset類型

標準庫定義了bitset類,使得位運算的使用更爲容易,並且能夠處理超過最長整型類型大小的位集合,其定義在頭文件bitset中。 定義和初始化 bitset是一個類模板,類似於array類,具有固定的大小,當定義一個bitset時,

原创 C++ Primer第五版筆記——隨機數

新標準前,C和C++都依賴與一個簡單的C庫函數rand來生成隨機數。此函數生成均勻分佈的僞隨機整數,每個隨機數在0和一個系統相關的最大值之間。rand函數有一些問題:有許多程序需要不同範圍的隨機數;一些應用需要隨機生成浮點數;一些程序

原创 C++ Primer第五版筆記————模板實參推斷

控制實例化: 當模板被使用時才實例化這一特性使得相同的實例可能出現在多個對象文件中,比如當兩個或多個獨立編譯的源文件使用了相同的模板,並提供了相同的模板參數時,每個文件中就都會有一個該模板的實例。 在大系統中,在多個文件中實例化相同模

原创 C++ Primer第五版筆記————函數模板顯式實參

在某些情況下,編譯器無法推斷模板實參的類型,或者希望允許用戶控制模板實例化。當函數返回類型與參數列表中的類型都不相同時,這兩種情況最常出現。 指定顯式實參 template <typename T1,typename T2,typena

原创 C++ Primer第五版筆記——模板參數與成員模板

模板參數 類似函數參數的名字,一個模板參數的名字也沒有什麼內在含義,通常將類型參數命名爲T,但是實際上可以是任何名字。 模板參數與作用域: 模板參數遵循普通的作用域規則。一個模板參數的可用範圍是在其聲明後,至模板聲明或定義結束之前。

原创 C++ Primer第五版筆記——定義模板

函數模板: 類似兩個數之間進行比較的功能,可能會發生在整數或小數上,可以通過定義一個通用的函數模板,而不用每個類型定義一個新函數。一個函數模板就是一個公式,可用來生成針對特定類型的版本: template <typename T> in

原创 網絡知識雜記

OSI模型各層常見設備: 1.網絡層:路由器、防火牆 2.數據鏈路層:網卡、網橋、交換機(相當於多個網橋並在一起) 3.物理層:中繼器、集線器(相當於多箇中繼器並在一起)、網線、網卡 4.傳輸層:網關 IP地址知識小結: IP

原创 C++ Primer第五版筆記——類模板

類模板是用來生成類的藍圖,與函數模板不同的是,編譯器不能爲類模板推斷模板參數類型,所以爲了使用類模板,需要在模板名後的尖括號中提供額外的信息。 定義類模板 類似函數模板,類模板以關鍵字template開始,後跟模板參數列表。在類模板(及

原创 C++ Primer第五版筆記——移動操作(二)

當一個類既有移動構造函數,又有拷貝構造函數時,編譯器使用普通的函數匹配規則來確定使用哪個構造函數,賦值操作的情況類似,即是說,當參數是左值時就調用拷貝構造函數,當參數是右值時就調用移動構造函數。 但是如果沒有移動構造函數,參數爲右值也會

原创 C++ Primer第五版筆記——重載運算符(一)

重載運算符是具有特殊名字的函數:由關鍵字operator加上要定義的運算符號組成,與其它函數相同,也有返回值、參數列表以及函數體。 當一個運算符函數是類的成員函數時,this指針綁定到左側運算對象。 我能只能重載已有的大多數運算符,而

原创 C++ Primer第五版筆記——移動操作(一)

新標準下的一個重要特性就是可以移動而非拷貝對象的能力,比如在標準庫容器中,重新分配內存的過程中,從舊內存將元素拷貝到新內存中是不必要的,更好的方式是移動元素;另一個原因是因爲IO類或unique_ptr這樣的類是包含不能被共享的資源的,不

原创 C++ Primer第五版筆記——拷貝控制和資源管理

可以通過定義拷貝操作來使得一個類的行爲是像一個值還是像一個指針,像一個值表示拷貝對象時,副本和源對象是分別獨立的的,改變其中任意一個都不會對另一個造成影響;像一個指針表示拷貝時副本和源對象共享底層的數據,改變其中任意一個都會對另一個造成影

原创 C++ Primer第五版筆記——抽象基類與訪問控制

抽象基類 純虛函數: 我們可以將一個函數定義爲純虛函數來告訴這個函數是沒有實際意義的。和普通函數不同的是純虛函數無須定義。通過在函數的聲明語句的分號前加上=0來說明一個虛函數時純虛函數。值得注意的是,可以爲純虛函數添加定義,但是必須是

原创 C++ Primer第五版筆記——拷貝控制

一個類通過定義五種特殊的成員函數來控制其拷貝、賦值、移動以及銷燬操作:拷貝構造函數、拷貝賦值運算符、移動構造函數、移動賦值運算符和析構函數。這些操作都是拷貝控制操作。 當實現自己的類的時候要想好在做這些操作時的規則,因爲編譯器通常會自動