你好,C++

陳良喬

  • 出版商: 清華大學
  • 出版日期: 2024-10-01
  • 定價: $594
  • 售價: 8.5$505
  • 語言: 簡體中文
  • ISBN: 730267258X
  • ISBN-13: 9787302672586
  • 相關分類: C++ 程式語言
  • 下單後立即進貨 (約4週~6週)

  • 你好,C++-preview-1
  • 你好,C++-preview-2
  • 你好,C++-preview-3
你好,C++-preview-1

相關主題

商品描述

"《你好,C++》主要介紹C++開發環境的搭建、基礎語法知識、面向對象編程思想以及標準模板庫的應用,特別針對初學者在學習C++過程中可能遇到的難點提供瞭解決方案。全書共分13章,以一個工資程序的不斷優化和完善為線索,展示瞭如何利用C++進行設計和解決實際問題。《你好,C++》遵循**的C++23標準,更新了所有代碼和講解,並增加了新標準引入的特性,如智能指針、std::thread等,使讀者能夠掌握**的C++知識。每章末尾都配有“本章練習”,幫助讀者通過實際編寫代碼來加深對知識的理解。 《你好,C++》語言風格輕松幽默,還收錄了一些公司的典型筆試題,無論是C++初學者還是中級程序員提升技能,都是**的選擇。同時,《你好,C++》也適合作為應用型本科及高職高專相關專業的教材使用。"

目錄大綱

目    錄

第1篇  叩開C++世界的大門

第1章  C++世界地圖 2

1.1  我們的第一個C++程序 2

1.1.1  下載並安裝Visual Studio社區版 2

1.1.2  創建“你好,C++”項目 3

1.1.3  編輯代碼,生成並運行C++程序 3

1.2  C++是什麽 5

1.3  C++的“前世今生” 6

1.3.1  從B到C 6

1.3.2  從C到C++ 7

1.3.3  更簡單、更高效:C++23讓C++續寫傳奇 7

1.4  三分天下:C++世界版圖 8

1.4.1  Windows系統下的C++開發 8

1.4.2  UNIX/Linux系統下的C++開發 9

1.4.3  嵌入式系統下的C++開發 9

1.5  如何學好C++ 9

1.5.1  “多讀多寫多思考”是學好C++的唯一途徑 10

1.5.2  和百度等搜索引擎做朋友 10

1.5.3  使用配備GPT-4的Microsoft Copilot這一AI小助手 11

1.5.4  C++詞典cplusplus.com 11

1.6  本章練習 12

第2章  與C++的第一次親密接觸 13

2.1  一個C++程序的自白 13

2.1.1  C++程序=預處理指令+程序代碼+註釋 13

2.1.2  程序的“父母”:編譯器和鏈接器 18

2.1.3  C++程序的執行過程 19

2.1.4  程序的兩大任務:描述數據與處理數據 21

2.2  基本輸入/輸出流 22

2.2.1  標準的輸入和輸出對象 23

2.2.2  輸出格式控制 24

2.2.3  讀/寫文件 25

2.3  本章練習 28

第2篇  歡迎來到C++的世界

第3章  C++世界眾生相 30

3.1  C++中的數據類型 30

3.2  變量和常量 31

3.2.1  變量的定義與初始化 32

3.2.2  常量 36

3.3  數值數據類型 42

3.3.1  整數類型 42

3.3.2  浮點數類型 45

3.4  布爾類型 48

3.5  字符串類型 50

3.5.1  字符類型 50

3.5.2  字符串類型 51

3.6  數組 55

3.6.1  數組的聲明與初始化 55

3.6.2  數組的使用 56

3.7  枚舉類型 57

3.8  用結構體類型描述復雜的事物 60

3.8.1  結構體的定義 60

3.8.2  結構體的使用 61

3.9  指向內存位置的指針 63

3.9.1  內存空間的訪問形式 64

3.9.2  指針變量的定義 64

3.9.3  指針的賦值和使用 65

3.10  本章練習 68

第4章  將語句編織成程序 69

4.1  用運算符對數據進行運算 69

4.1.1  用表達式表達設計意圖 70

4.1.2  算術運算符 71

4.1.3  賦值運算符 72

4.1.4  關系運算符 73

4.1.5  邏輯運算符 76

4.1.6  運算符之間的優先級 78

4.1.7  將表達式組織成語句 80

4.2  條件選擇語句 81

4.2.1  if語句:如果……那麽……  81

4.2.2  表達並列條件選擇的switch語句:如果……如果……如果……  85

4.3  循環控制語句 89

4.3.1  while循環:只要……就一直…… 89

4.3.2  do…while循環:一直……只要……  91

4.3.3  for循環:在某個範圍內……每個都……  93

4.3.4  循環控制:break和continue 95

4.4  從語句到程序 98

4.4.1  用三種流程控制結構將多條語句串聯成程序 98

4.4.2  工資程序成長記:用數組處理批量數據,用循環結構執行重復操作 100

4.5  本章練習 103

第5章  用函數封裝程序功能 105

5.1  函數就是一個大“箱子” 105

5.1.1  函數的聲明和定義 106

5.1.2  函數調用機制 110

5.1.3  函數參數的傳遞 115

5.1.4  函數的返回值 117

5.1.5  函數的遞歸調用 118

5.2  內聯函數 121

5.2.1  用空間換時間的內聯函數 121

5.2.2  內聯函數的使用規則 122

5.3  重載函數 123

5.3.1  重載函數的聲明 123

5.3.2  重載函數的解析 125

5.4  函數設計的基本原則 126

5.4.1  函數聲明的設計規則 126

5.4.2  函數體的設計規則 128

5.4.3  工資程序成長記:函數 134

5.5  本章練習 138

第6章  當C++愛上面向對象 139

6.1  從結構化程序設計到面向對象程序設計 139

6.1.1  “自頂向下,逐步求精”的面向過程程序設計 140

6.1.2  萬般皆對象:面向對象程序設計 141

6.1.3  面向對象程序設計的三座基石:封裝、繼承與多態 142

6.2  類:當C++愛上面向對象 145

6.2.1  類的聲明和定義 145

6.2.2  使用類創建對象 150

6.2.3  一個對象的生與死:構造函數和析構函數 152

6.2.4  有一隻叫作多利的羊:拷貝構造函數 156

6.2.5  運算符重載 162

6.2.6  類是如何藏私房錢的:類成員的訪問控制 164

6.2.7  在友元中訪問類的隱藏信息 167

6.3  類如何面向對象 170

6.3.1  用類機制實現封裝 170

6.3.2  用基類和派生類實現繼承 172

6.3.3  用虛函數實現多態 179

6.4  工資程序成長記:類與對象 187

6.4.1  需求分析:老闆要的是這樣一個工資程序 188

6.4.2  從問題描述中發現對象 189

6.4.3  分析對象的屬性和行為 189

6.4.4  依葫蘆畫瓢:用C++表達設計結果 191

6.5  高手是這樣煉成的 201

6.5.1  C++類對象的內存模型 201

6.5.2  指向自身的this指針 204

6.6  本章練習 206

第7章  C++世界的奇人異事 207

7.1  一切指針都是紙老虎:徹底理解指針 207

7.1.1  指針的運算 207

7.1.2  靈活的void類型和void類型指針 209

7.1.3  指向指針的指針 211

7.1.4  指針在函數中的應用 213

7.1.5  引用—給變量起個好聽好記的綽號 216

7.2  亡羊補牢—程序中的異常處理 220

7.2.1  異常處理 220

7.2.2  異常的函數接口聲明 222

7.3  編寫更復雜的C++程序 223

7.3.1  源文件和頭文件 223

7.3.2  命名空間 225

7.3.3  作用域與可見性 228

7.3.4  編譯前的預處理 230

7.4  高手是這樣煉成的 232

7.4.1  用宏定義化繁為簡 232

7.4.2  使用typedef給數據類型取個外號 233

7.4.3  C++世界的管家婆—用const保護數據 235

7.5  本章練習 238

第3篇  攀登C++世界的高峰

第8章  用STL優化你的程序 240

8.1  跟STL做朋友 241

8.1.1  算法 + 容器 + 迭代器 = STL 241

8.1.2  在程序中使用STL 242

8.2  用模板實現通用算法 244

8.2.1  函數模板 245

8.2.2  類模板 247

8.3  本章練習 250

第9章  用STL中的容器管理數據 251

9.1  容器就是STL中的瓶瓶罐罐 251

9.1.1  操作容器中的數據元素 253

9.1.2  使用迭代器訪問容器中的數據元素 254

9.1.3  容器的使用說明書 256

9.1.4  如何選擇合適的容器 258

9.2  vector容器是數組的最佳替代者 259

9.2.1  創建並初始化vector對象 259

9.2.2  對vector容器的操作 261

9.2.3  訪問vector容器中的數據 262

9.3  可以保存鍵-值對的map容器 262

9.3.1  創建並初始化map容器 263

9.3.2  將數據保存到map容器中 264

9.3.3  根據鍵找到對應的值 265

9.4  本章練習 266

第10章  用STL中的通用算法處理數據 268

10.1  STL算法中的四大類別 268

10.2  容器元素的遍歷與查找 270

10.2.1  用for_each()算法遍歷容器中的數據元素 270

10.2.2  用find()和find_if()算法從容器中挑選數據 271

10.3  容器元素的復制與變換 275

10.3.1  復制容器元素:copy()算法 275

10.3.2  合並容器元素:merge()算法 278

10.3.3  變換容器元素:transform函數 280

10.4  容器元素的排序 282

10.4.1  使用sort()算法對容器中的數據進行排序 282

10.4.2  自定義排序的規則 285

10.5  實戰STL算法 287

10.5.1  “算法”老師帶來的一堂別開生面的體育課 287

10.5.2  刪除容器中的冗餘元素 292

10.6  本章練習 293

第11章  函數的三件“馬甲”:函數指針、函數對象與Lambda表達式 294

11.1  函數指針 294

11.1.1  函數指針的定義、賦值與使用 294

11.1.2  用函數指針實現回調函數 296

11.1.3  將函數指針應用到STL算法中 298

11.2  函數對象 300

11.2.1  定義一個函數對象 300

11.2.2  利用函數對象記住狀態數據 301

11.3  用Lambda表達式編寫更簡單的函數 304

11.3.1  最簡單直接的函數表達形式:Lambda表達式 304

11.3.2  Lambda表達式的定義與使用 305

11.4  程序成長記:容器與算法,讓我們愛上C++ 308

11.5  本章練習 312

第12章  C++世界的幾件新鮮事 313

12.1  右值引用進一步提升C++的性能 313

12.1.1  什麽是右值引用 313

12.1.2  右值引用是如何提高性能的 314

12.2  智能指針shared_ptr 318

12.2.1  痛並快樂著:C++中的內存管理 318

12.2.2  引用計數:shared_ptr為什麽這麽聰明 319

12.2.3  智能指針shared_ptr的應用場景 321

12.2.4  shared_ptr的使用 323

12.2.5  自定義shared_ptr的釋放行為 327

12.3  用<thread>進行多線程開發 328

12.3.1  利用thread創建線程 329

12.3.2  利用future和promise簡化線程的返回值操作 332

12.3.3  利用mutex處理線程之間共享資源的競爭 337

12.4  本章練習 341

第13章  找工作就靠它了 342

13.1  打好基礎 342

13.1.1  基本概念 342

13.1.2  函數 345

13.1.3  面向對象程序設計 347

13.1.4  類與對象 349

13.1.5  STL 358

13.2  積累經驗 361

13.3  考查智力 364