超硬核知識:兩萬字總結(jié)《C++ Primer》要點!
對于想要入門C++的同學來說,《C++ Primer》是一本不能錯過的入門書籍,它用平易近人的實例化教學激發(fā)學生的學習興趣,幫助學生一步步走進C++的大門。在本文中,作者Jacen用兩萬多字總結(jié)了《C++ Primer 中文版(第五版)》1-16章的閱讀要點,可以作為該書的閱讀參考。現(xiàn)在到了第六版也沒關(guān)系。注:原書更為詳細,本文僅作學習交流使用。

第一章 開始
1.1 編寫一個簡單的C++程序

每個C++程序都包含一個或多個函數(shù),其中一個必須命名為main.
1.2 初識輸入輸出

1.3 注釋簡介
兩種:
單行注釋://
界定符:/?和?/
1.4 控制流
while;for;if;
第二章 變量和基本類型
P30-P71
數(shù)據(jù)類型是程序的基礎。C++語言支持廣泛的數(shù)據(jù)類型。
基本內(nèi)置類型
1.算術(shù)類型

2.類型轉(zhuǎn)換
不要混用符號類型和無符號類型。
變量
1.變量定義
(1)基本形式:
類型說明符,隨后緊跟著一個或者多個變量名組成的列表,其中變量名以逗號分隔,最后以分號結(jié)束。
(2)初始值
在C++中,初始化和賦值是2個完全不同的操作。初始化的含義是創(chuàng)建變量的時候賦予一個初始值,而賦值的含義是把對象的當前值擦除,用一個新值來替代。兩者區(qū)別很小。
(3)列表初始化
用花括號來初始化變量的方式,稱為列表初始化。
(4)默認初始化
如果定義變量沒有指定初始值,則變量被默認初始化。
::: tip
例外情況:
定義在函數(shù)體內(nèi)部的內(nèi)置類型變量將不被初始化,其值未定義。
建議初始化每個內(nèi)置類型的變量。:::
2.變量聲明和定義的關(guān)系
變量聲明:規(guī)定了變量的類型和名字。
變量定義:除聲明之外,還需要申請存儲空間。
如果想聲明一個變量,而非定義它,需要使用extern關(guān)鍵詞。

::: tip變量只能被定義一次,但可以被多次聲明。:::
3.名字的作用域
作用域:C++中大多數(shù)作用域都用花括號分隔。
作用域中一旦聲明了某個名字,它所嵌套的所有作用域都能訪問該名字。同時,允許在內(nèi)層作用域中重新定義外層作用域中有的名字。
::: warning如果函數(shù)有可能用到某全局變量,則不宜再定義一個同名的局部變量。:::
復合類型
定義:復合類型是基于其他類型定義的類型。
1.引用
引用:為對象起另外一個名字。
::: warning引用必須被初始化。引用本身不是對象,所以不能定義引用的引用。引用要和綁定的對象嚴格匹配。引用類型的初始值,必須是一個對象。:::

const限定符
定義:const用于定義一個變量,它的值不能被改變。const對象必須初始化。
::: tip
默認狀態(tài)下,const對象僅在文件內(nèi)有效。當多個文件出現(xiàn)了同名的const變量時,等同于在不同文件中分別定義了獨立的變量。
如果想讓const變量在文件間共享,則使用extern修飾。
:::
(1)const的引用
允許為一個常量引用綁定非常量的對象、字面值,甚至是個一般表達式。
一般,引用的類型必須與其所引用對象的類型一致,特殊情況是表達式。
(2)指針和const
弄清楚類型,可以從右邊往左邊閱讀。
(3)頂層const
top-level const 表示指針本身是個常量
low-level const表示指針所指的對象是一個常量。
(4)constexpr和常量表達式
C++新標準規(guī)定,允許將變量聲明為constexpr類型以便由編譯器來驗證變量的值是否是一個常量表達式。
處理類型

自定義數(shù)據(jù)結(jié)構(gòu)
(1)類
數(shù)據(jù)結(jié)構(gòu)是把一組相關(guān)的數(shù)據(jù)元素組織起來,然后使用它們的策略和方法。
類一般不定義在函數(shù)體內(nèi),為了確保各個文件中類的定義一致,類通常被定義在頭文件中,而且類所在頭文件的名字應該與類的名字一樣。
頭文件通常包含那些被定義一次的實體。
(2)預處理器

一般把預處理變量的名字全部大寫。
術(shù)語
空指針 :值為0的指針,空指針合法但是不指向任何對象。nullPtr是表示空指針的字面值常量。
void*:可以指向任意非常量的指針類型,不能執(zhí)行解引用操作。
第三章 字符串、向量和數(shù)組
P74-P118
string表示可變長的字符序列,vector存放的是某種給定類型對象的可變長序列。
命名空間的 using 聲明

頭文件不應包含using聲明。
標準庫類型 string

標準庫類型 vector

迭代器介紹

數(shù)組

多維數(shù)組

術(shù)語
begin?string和vector的成員,返回指向第一個元素的迭代器。也是一個標準庫函數(shù),輸入一個數(shù)組,返回指向該數(shù)組首元素的指針。
end?string和vector的成員,返回一個尾后迭代器。也是一個標準庫函數(shù),輸入一個數(shù)組, 返回指向該數(shù)組尾元素的下一個位置的指針。
第四章 表達式
P120-P151
4.1 基礎
重載運算符:為已經(jīng)存在的運算符賦予了另外一層含義。
左值、右值:
當一個對象用作右值得時候,用的是對象的值(內(nèi)容)。
當對象被用作左值得時候,用的是對象的身份(在內(nèi)存中的位置)。
4.2 算術(shù)運算符
%:參與取余運算的運算對象必須是整數(shù)類型。
4.3 邏輯和關(guān)系運算符

&& 運算符和 || 運算符都是先求左側(cè)運算對象的值再求右側(cè)運算對象的值。
::: warning
進行比較運算的時候,除非比較的對象是bool類型,否則不要使用布爾字面值true,false作為運算對象。
:::
4.4 賦值運算符

4.5 遞增和遞減運算符
遞增運算符 ++
遞減運算符 —
4.6 成員訪問運算符

4.7 條件運算符

4.8 位運算符

4.9 sizeof運算符

4.10 逗號運算符
逗號運算符含有兩個運算對象,按照從左向右的順序依次求值。
4.11 類型轉(zhuǎn)換

4.12 運算符優(yōu)先級表
第五章 語句



第六章 函數(shù)





第七章 類
P228-P273
類的基本思想是數(shù)據(jù)抽象和封裝。
抽象是一種依賴于接口和實現(xiàn)分離的編程技術(shù)。
封裝實現(xiàn)了類的接口和實現(xiàn)的分離。









第八章 IO庫



第九章 順序容器















第十章 泛型算法







第十一章 關(guān)聯(lián)容器






第十二章 動態(tài)內(nèi)存






第十三章 拷貝控制




13.3 交換操作
swap
13.4 拷貝控制示例
P460
13.5 動態(tài)內(nèi)存管理類
P464


第十四章 重載運算與類型轉(zhuǎn)換






第十五章 面向?qū)ο蟪绦蛟O計









第十六章 模板與泛型編程
P578-P630
(1)控制實例化
當編譯器遇到extern模板聲明時,它不會在本文件中生成實例化代碼。將一個實例化聲明為extern就表示承諾在程序其他位置有該實例化的一個非extern聲明(定義)。對于一個給定的實例化版本,可能有多個extern聲明,但必須只有一個定義。
(2)模板是標準庫的基礎。
生成特定類或者函數(shù)的過程稱為實例化。
(3)術(shù)語
類模板:模板定義,可從它實例化出特定的類。類模板的定義以關(guān)鍵詞template開始,后面跟尖括號對<和>,其內(nèi)為一個用逗號分隔的一個或多個模板參數(shù)的列表,隨后是類的定義。
函數(shù)模板:模板定義,可從它實例化出特定函數(shù)。函數(shù)模板的定義以關(guān)鍵詞template開始,后跟尖括號<和>,其內(nèi)以一個用逗號分隔的一個或多個模板參數(shù)的列表,隨后是函數(shù)的定義。
《C++ Primer》
[美] Stanley B. Lippman,Josee Lajoie,Barbara E. Moo 著
王剛 楊巨峰 譯
如果只讀一本C++書,本書將是你永不局悔的選擇
如果只讀一本C++書籍,相信所有讀過的人都會毫不猶豫選擇《C++ Primer(中文版)》,無論初學或老手既可用來理解C++11規(guī)則背后的原理,也可用其新語言特性與標準庫來快速構(gòu)建健壯程序,采用中文版頁碼全面呈現(xiàn)原書大量交叉引用及詳盡索引,新式輔學設置與課后操練用于避開陷阱、鞏固良法!
書籍和視頻學習效果更佳!

寫在最后:對于準備成為一名優(yōu)秀程序員的朋友,如果你想更好的提升你的編程核心能力(內(nèi)功),讓自己成為一個具有真材實料的厲害的程序員,不妨從現(xiàn)在開始!C/C++,永不過時的編程語言~
微信公眾號:C語言編程學習基地
整理分享(多年學習的源碼、項目實戰(zhàn)視頻、項目筆記,基礎入門教程)
歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
