-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

C++17入門經典(第5版)

( 簡體 字)
作者:[美]艾佛?霍爾頓(Ivor Horton) 彼得?范維爾特(Peter Van Weert) 著 盧旭紅 張駿溫 譯類別:1. -> 程式設計 -> C++ -> C++
譯者:
出版社:清華大學出版社C++17入門經典(第5版) 3dWoo書號: 51340
詢問書籍請說出此書號!

缺書
NT售價: 495

出版日:6/1/2019
頁數:510
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302527695
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

歡迎閱讀《C++17入門經典(第5版)》。《C++17入門經典(第5版)》是Ivor Horton撰寫的Beginning ANSI C++的修訂更新版本。自從那《C++17入門經典(第5版)》出版以后,C++語言已經被大量擴展和改進,使得如今已經無法在一《C++17入門經典(第5版)》中詳細解釋完整的C++語言。《C++17入門經典(第5版)》將介紹C++語言和標準庫特性的基本知識,足以讓讀者開始編寫自己的C++程序。學習完《C++17入門經典(第5版)》后,讀者將有能力擴展自己的C++技能的深度和廣度。
我們假定讀者沒有任何編程經驗。如果讀者樂于學習,并且擅長邏輯思維,那么理解C++并沒有想象中那么難。通過開發C++技能,讀者將學習一種已經有數千萬人使用的編程語言,而且這種語言能夠用來在幾乎任何環境中開發應用程序。
C++非常強大,甚至可以說,它比大部分編程語言更加強大。所以,就像任何強大的工具一樣,如果不經訓練就開始使用,可能造成嚴重傷害。我們常把C++比作瑞士軍刀:由來已久,大眾信任,極為靈活,但也可能令人茫然,并且到處是尖銳的東西,可能傷害自己。但是,當有人明明白白解釋不同工具的用途,并講解一些基本的用刀安全守則之后,就再也不需要尋找其他小型刀具了。
學習C++并不像想象中的那樣具有很大危險或困難。如今的C++要比許多人想象中的更容易理解。自從40年前C++語言問世之后,已經有了長足的改進。本質上,我們已經學會了如何以最安全有效的方式來使用其強大的刀刃和工具。而且,可能更重要的是,C++語言及其標準庫也相應地發生了演化,更便于使用。特別是,過去十年間,“現代C++”開始崛起。現代C++強調使用更新、更具表達力、更安全的語言特性,并結合經過實踐驗證的最佳實踐和編碼指導原則。當知道并應用一些簡單的規則和技術后,C++的許多復雜性將隨之消失。關鍵在于有人能夠不只恰當地、循序漸進地解釋C++能做什么,還能解釋應該怎么使用C++去做。這正是《C++17入門經典(第5版)》的目的。
在這本最新修訂版中,我們不遺余力,使內容跟上C++編程的這個新時代。當然,與以前的版本一樣,我們仍然采用輕松的、循序漸進的方式進行講解。我們使用許多實用的編碼示例和練習題,展示C++舊有的和新增的所有刀刃。還不只如此:我們更加努力地確保總是解釋實現某種目的的最適合工具,為什么如此選擇,以及如何避免造成失誤。我們確保讀者從一開始學習C++,就采用安全高效的現代編程風格,而這會是未來的雇主們希望員工具備的技能。
《C++17入門經典(第5版)》講解的C++語言對應于最新的國際標準化組織(International Organization for Standardization,ISO)標準,常被稱為C++17。但是,我們并沒有介紹C++17的全部內容,因為相比C++語言的之前版本,C++17所做的許多擴展針對的是高級應用。《C++17入門經典(第5版)》的所有示例均可使用支持C++17的編譯器編譯執行。
如何使用《C++17入門經典(第5版)》
要通過《C++17入門經典(第5版)》學習C++,需要有一個支持C++17標準的編譯器和一個適合編寫程序代碼的文本編輯器。目前有一些編譯器支持C++17,其中有幾個是免費的。
GCC和Clang編譯器對C++17提供了全面支持,并且二者都是開源的,可免費下載。對于新手,安裝這兩個編譯器,并將其與合適的編輯器關聯起來,并不容易。安裝GCC和合適的編輯器,有一種簡單的方法,即下載Code::Blocks或Qt Creator。它們都是免費的集成開發環境(Integrated Development Environment,IDE),可用于Linux、Apple macOS和Microsoft Windows。它們支持使用幾種編譯器進行完整的程序開發,其中包括GCC和Clang。這意味著安裝了它們可同時得到對C和C++的支持。
另一種選擇是使用Microsoft Visual C++,它運行在Microsoft Windows上。Microsoft Visual C++幾乎完全支持C++17;《C++17入門經典(第5版)》的所有示例應該能夠在最新版本的Microsoft Visual C++上正確編譯。其Community版本和Express版本可供個人甚至小規模專業團隊免費使用。Visual Studio提供了一個功能全面的專業編輯器,以及對其他語言(如C#和Basic)的支持。
還有其他一些編譯器也支持C++17,在網上進行搜索可了解它們。《C++17入門經典(第5版)》提供的下載文件中還包含一個清單,其中列出了其他一些可幫助入門的有用資源(讀者可通過掃描封底二維碼來下載《C++17入門經典(第5版)》源代碼)。
《C++17入門經典(第5版)》內容應當按順序閱讀,所以讀者應該從頭讀起,直到讀完《C++17入門經典(第5版)》。但是,只通過讀書是無法學會編程的。只有實際編寫代碼,才能學會如何用C++編寫程序,所以一定要自己鍵入所有示例,而不要簡單地從下載文件中復制代碼,然后編譯并執行自己鍵入的代碼。這項工作有時候看起來會很枯燥,但是讀者會驚奇地發現,僅僅鍵入C++語句就能夠對理解C++有巨大幫助,尤其是感覺難以理解某些思想的時候更是如此。如果某個示例不能工作,先不要急于翻看《C++17入門經典(第5版)》來查找原因。試著從代碼中分析什么地方出錯。這是一種很好的練習,因為在實際開發C++應用程序時,更多的時候需要自己分析代碼。
犯錯是學習過程中不可缺少的一部分,書中的練習題給了讀者大量機會來犯錯。自己設計一些練習題是一個好主意。如果不確定怎么解決一個問題,先自己試一試,然后查看答案。犯錯越多,對什么地方會出錯的理解就越深刻。確保完成所有練習題,并且要記住,只有確定自己解決不了問題時才查看答案。大部分練習題只需要直接運用對應章節中的知識,換言之,它們只是練習而已,但是也有一些練習題需要深入思考,甚至需要一些靈感。
我們希望讀者能夠掌握C++,并且最重要的是,享受使用C++編寫程序的過程。

Ivor Horton
Peter Van Weert
內容簡介:

《C++ 17入門經典(第5版)》介紹如何使用最新的C++17編寫程序。從基礎知識講起,通過詳細分析示例,幫助讀者成為能夠自己編寫程序的C++程序員。參考《C++ 17入門經典(第5版)》的內容,并安裝最新的C++編譯器,讀者很快就能編寫真正的C++程序。《C++ 17入門經典(第5版)》不需要讀者有任何編程經驗,因此在講解所有語言概念時,均給出了可以工作的程序示例,并且全部章節都包含練習題,以幫助讀者檢測并練習自己學到的知識。《C++ 17入門經典(第5版)》為正文中的所有代碼示例和練習題提供可下載的代碼。
《C++ 17入門經典(第5版)》內容已針對C++語言的最新版本C++17做了全面更新,并且介紹了現代C++的約定和最佳實踐。《C++ 17入門經典(第5版)》還介紹了C++標準庫的元素,它們為C++17語言提供了必要的支持。
目錄:

第1章基本概念1
1.1現代C++1
1.2標準庫2
1.3C++程序概念2
1.3.1源文件和頭文件3
1.3.2注釋和空白3
1.3.3預處理指令和標準庫頭文件3
1.3.4函數3
1.3.5語句4
1.3.6數據的輸入輸出4
1.3.7return語句5
1.3.8名稱空間5
1.3.9名稱和關鍵字6
1.4類和對象6
1.5模板6
1.6代碼的表示樣式和編程風格7
1.7創建可執行文件7
1.8過程化編程和面向對象編程8
1.9表示數字9
1.9.1二進制數9
1.9.2十六進制數10
1.9.3負的二進制數11
1.9.4八進制數12
1.9.5Big-Endian和Little-Endian系統12
1.9.6浮點數13
1.10表示字符14
1.10.1ASCII碼14
1.10.2UCS和Unicode14
1.11C++源字符15
1.12本章小結17
1.13練習17
第2章基本數據類型19
2.1變量、數據和數據類型19
2.1.1定義整型變量19
2.1.2零初始化22
2.1.3定義有固定值的變量22
2.2整型字面量22
2.2.1十進制整型字面量23
2.2.2十六進制的整型字面量23
2.2.3八進制的整型字面量24
2.2.4二進制的整型字面量24
2.3整數的計算24
2.4賦值運算26
2.5sizeof運算符29
2.6整數的遞增和遞減30
2.7定義浮點變量31
2.8浮點字面量32
2.9浮點數的計算32
2.9.1缺點32
2.9.2無效的浮點結果33
2.9.3數學函數33
2.10輸出流的格式化35
2.11混合的表達式和類型轉換37
2.12顯式類型轉換38
2.13確定數值的上下限40
2.14使用字符變量41
2.15auto關鍵字42
2.16本章小結43
2.17練習43
第3章處理基本數據類型45
3.1運算符的優先級和相關性45
3.2位運算符46
3.2.1移位運算符47
3.2.2位模式下的邏輯運算49
3.3枚舉數據類型53
3.4數據類型的別名55
3.5變量的生存期56
3.6全局變量56
3.7本章小結59
3.8練習59
第4章決策61
4.1比較數據值61
4.1.1應用比較運算符62
4.1.2比較浮點數值63
4.2if語句63
4.2.1嵌套的if語句65
4.2.2字符分類和轉換66
4.3if-else語句68
4.3.1嵌套的if-else語句69
4.3.2理解嵌套的if語句70
4.4邏輯運算符71
4.4.1邏輯與運算符71
4.4.2邏輯或運算符71
4.4.3邏輯非運算符72
4.4.4組合邏輯運算符72
4.4.5對整數操作數應用邏輯運算符73
4.4.6對比邏輯運算符與位運算符74
4.5條件運算符75
4.6switch語句76
4.7語句塊和變量作用域81
4.8本章小結82
4.9練習83
第5章數組和循環85
5.1數組85
5.2理解循環87
5.3for循環87
5.4避免幻數89
5.5用初始化列表定義數組的大小90
5.6確定數組的大小90
5.7用浮點數控制for循環91
5.8使用更復雜的for循環控制表達式93
5.9基于范圍的for循環94
5.10while循環95
5.11do-while循環96
5.12嵌套的循環98
5.13跳過循環迭代100
5.14循環的中斷101
5.15使用無符號整數控制for循環103
5.16字符數組104
5.17多維數組107
5.17.1初始化多維數組108
5.17.2多維字符數組110
5.18在運行期間給數組分配內存空間111
5.19數組的替代品112
5.19.1使用array<T,N>容器113
5.19.2使用std::vector<T>容器116
5.20本章小結119
5.21練習120
第6章指針和引用121
6.1什么是指針121
6.2地址運算符123
6.3間接運算符124
6.4為什么使用指針125
6.5char類型的指針125
6.6常量指針和指向常量的指針128
6.7指針和數組130
6.7.1指針的算術運算130
6.7.2使用數組名的指針表示法132
6.8動態內存分配133
6.8.1棧和自由存儲區134
6.8.2運算符new和delete134
6.8.3數組的動態內存分配135
6.9通過指針選擇成員138
6.10動態內存分配的危險138
6.10.1懸掛指針和多次釋放138
6.10.2分配與釋放的不匹配139
6.10.3內存泄漏139
6.10.4自由存儲區的碎片139
6.11內存分配的黃金準則140
6.12原始指針和智能指針140
6.12.1使用unique_ptr<T>指針141
6.12.2使用shared_ptr<T>指針143
6.13理解引用146
6.13.1定義引用146
6.13.2在基于范圍的for循環中使用引用變量147
6.14本章小結148
6.15練習148
第7章操作字符串151
7.1更強大的string類151
7.1.1定義string對象151
7.1.2string對象的操作154
7.1.3訪問字符串中的字符157
7.1.4訪問子字符串158
7.1.5比較字符串158
7.1.6搜索字符串162
7.1.7修改字符串167
7.1.8對比std::string與std::vector<char>170
7.2將字符串轉換為數字171
7.3字符串流171
7.4國際字符串172
7.4.1存儲wchar_t字符的字符串172
7.4.2包含Unicode字符串的對象173
7.5原始字符串字面量173
7.6本章小結174
7.7練習175
第8章定義函數177
8.1程序的分解177
8.1.1類中的函數177
8.1.2函數的特征178
8.2定義函數178
8.2.1函數體179
8.2.2返回值180
8.2.3函數聲明181
8.3給函數傳送實參182
8.3.1按值傳送182
8.3.2按引用傳送187
8.3.3字符串視圖:新的conststring引用192
8.4默認實參值194
8.5main()函數的實參196
8.6從函數中返回值196
8.6.1返回指針197
8.6.2返回引用199
8.6.3對比返回值與輸出參數200
8.6.4返回類型推斷200
8.6.5使用可選值201
8.7靜態變量203
8.8內聯函數204
8.9函數重載204
8.9.1重載和指針參數206
8.9.2重載和引用參數206
8.9.3重載和const參數207
8.9.4重載和默認實參值208
8.10遞歸209
8.10.1基本示例209
8.10.2遞歸算法210
8.11本章小結215
8.12練習216
第9章函數模板219
9.1函數模板219
9.2創建函數模板的實例220
9.3模板類型參數221
9.4顯式指定模板實參221
9.5函數模板的特例222
9.6函數模板和重載222
9.7帶有多個參數的函數模板224
9.8模板的返回類型推斷225
9.8.1decltype和拖尾返回類型225
9.8.2對比decltype(auto)、拖尾decltype()與auto226
9.9模板參數的默認值226
9.10非類型的模板參數227
9.11本章小結229
9.12練習229
第10章程序文件和預處理指令231
10.1理解轉換單元231
10.1.1單一定義規則231
10.1.2程序文件和鏈接232
10.1.3確定名稱的鏈接屬性232
10.1.4外部函數233
10.1.5外部變量233
10.1.6內部名稱235
10.2預處理源代碼236
10.3定義預處理宏236
10.3.1定義類似于函數的宏238
10.3.2取消宏的定義239
10.4包含頭文件240
10.4.1防止重復頭文件的內容240
10.4.2第一個頭文件241
10.5名稱空間242
10.5.1全局名稱空間242
10.5.2定義名稱空間242
10.5.3應用using聲明244
10.5.4函數和名稱空間244
10.5.5未命名的名稱空間246
10.5.6嵌套的名稱空間247
10.5.7名稱空間的別名248
10.6邏輯預處理指令248
10.6.1邏輯#if指令248
10.6.2測試指定標識符的值249
10.6.3多個代碼選擇249
10.6.4標準的預處理宏250
10.6.5檢查頭文件是否可用251
10.7調試方法251
10.7.1集成調試器252
10.7.2調試中的預處理指令252
10.7.3使用assert()宏254
10.8靜態斷言255
10.9本章小結257
10.10練習257
第11章定義自己的數據類型259
11.1類和面向對象編程259
11.1.1封裝260
11.1.2繼承262
11.1.3多態性263
11.2術語263
11.3定義類264
11.4構造函數265
11.4.1默認構造函數265
11.4.2定義類的構造函數266
11.4.3使用default關鍵字267
11.4.4在類的外部定義函數和構造函數267
11.4.5默認構造函數的參數值268
11.4.6使用成員初始化列表269
11.4.7使用explicit關鍵字269
11.4.8委托構造函數271
11.4.9副本構造函數272
11.5訪問私有類成員273
11.6this指針274
11.7const對象和const成員函數275
11.7.1const成員函數276
11.7.2const正確性277
11.7.3重載const277
11.7.4常量的強制轉換279
11.7.5使用mutable關鍵字279
11.8友元280
11.8.1類的友元函數280
11.8.2友元類281
11.9類的對象數組282
11.10類對象的大小283
11.11類的靜態成員283
11.11.1靜態成員變量283
11.11.2訪問靜態成員變量286
11.11.3靜態常量286
11.11.4類類型的靜態成員變量287
11.11.5靜態成員函數288
11.12析構函數288
11.13使用指針作為類成員290
11.14嵌套類299
11.15本章小結302
11.16練習303
第12章運算符重載305
12.1為類實現運算符305
12.1.1運算符重載305
12.1.2實現重載運算符306
12.1.3非成員運算符函數307
12.1.4提供對運算符的全部支持308
12.1.5在類中實現所有的比較運算符309
12.2可以重載的運算符311
12.3運算符函數習語313
12.4為輸出流重載<<運算符313
12.5重載算術運算符315
12.6成員與非成員函數318
12.7重載一元運算符320
12.8重載遞增和遞減運算符321
12.9重載下標運算符322
12.10函數對象326
12.11重載類型轉換326
12.12重載賦值運算符327
12.12.1實現復制賦值運算符328
12.12.2復制賦值運算符與副本構造函數330
12.12.3賦值不同類型330
12.13本章小結331
12.14練習331
第13章繼承333
13.1類和面向對象編程333
13.2類的繼承334
13.2.1繼承和聚合335
13.2.2派生類335
13.3把類的成員聲明為protected337
13.4派生類成員的訪問級別338
13.4.1在類層次結構中使用訪問修飾符338
13.4.2在類層次結構中選擇訪問修飾符339
13.4.3改變繼承成員的訪問修飾符340
13.5派生類中的構造函數341
13.5.1派生類中的副本構造函數343
13.5.2派生類中的默認構造函數344
13.5.3繼承構造函數344
13.6繼承中的析構函數345
13.7重復的成員變量名347
13.8重復的成員函數名347
13.9多重繼承348
13.9.1多個基類348
13.9.2繼承成員的模糊性349
13.9.3重復繼承352
13.9.4虛基類353
13.10在相關的類類型之間轉換353
13.11本章小結354
13.12練習354
第14章多態性355
14.1理解多態性355
14.1.1使用基類指針355
14.1.2調用繼承的函數357
14.1.3虛函數359
14.1.4虛函數中的默認實參值365
14.1.5通過引用調用虛函數366
14.1.6多態集合366
14.1.7通過指針釋放對象367
14.1.8在指針和類對象之間轉換369
14.1.9動態強制轉換370
14.1.10調用虛函數的基類版本373
14.1.11在構造函數或析構函數中
調用虛函數374
14.2多態性引發的成本375
14.3確定動態類型376
14.4純虛函數378
14.4.1抽象類379
14.4.2用作接口的抽象類381
14.5本章小結382
14.6練習383
第15章運行時錯誤和異常385
15.1處理錯誤385
15.2理解異常386
15.2.1拋出異常386
15.2.2異常處理過程388
15.2.3導致拋出異常的代碼389
15.2.4嵌套的try塊389
15.3用類對象作為異常392
15.3.1匹配catch處理程序和異常393
15.3.2用基類處理程序捕獲派生類異常394
15.4重新拋出異常396
15.5未處理的異常398
15.6捕獲所有的異常399
15.7不拋出異常的函數400
15.7.1noexcept限定符400
15.7.2異常和析構函數401
15.8異常和資源泄漏401
15.8.1資源獲取即初始化403
15.8.2用于動態內存的標準RAII類404
15.9標準庫異常405
15.9.1異常類的定義406
15.9.2使用標準異常407
15.10本章小結409
15.11練習410
第16章類模板413
16.1理解類模板413
16.2定義類模板414
16.2.1模板參數414
16.2.2簡單的類模板415
16.3定義類模板的成員函數416
16.3.1構造函數模板416
16.3.2析構函數模板417
16.3.3下標運算符模板417
16.3.4賦值運算符模板419
16.4創建類模板的實例422
16.5非類型的類模板參數426
16.5.1帶有非類型參數的成員函數的模板427
16.5.2非類型參數的實參431
16.5.3對比非類型模板實參與構造函數實參431
16.6模板參數的默認值432
16.7模板的顯式實例化432
16.8類模板特化433
16.8.1定義類模板特化433
16.8.2部分模板特化433
16.8.3從多個部分特化中選擇434
16.9在類模板中使用static_assert()434
16.10類模板的友元435
16.11帶有嵌套類的類模板436
16.11.1棧成員的函數模板438
16.11.2消除依賴名稱的歧義441
16.12本章小結443
16.13練習443
第17章移動語義445
17.1lvalue和rvalue445
17.2移動對象447
17.2.1傳統方法449
17.2.2定義移動成員449
17.3顯式移動對象452
17.3.1只能移動的類型452
17.3.2移動對象的繼續使用453
17.4看似矛盾的情況454
17.4.1std::move()并不移動任何東西454
17.4.2rvalue引用是一個lvalue454
17.5繼續探討函數定義455
17.5.1按rvalue引用傳送455
17.5.2按值傳送的歸來456
17.5.3按值返回458
17.6繼續討論定義移動成員459
17.6.1總是添加noexcept459
17.6.2“移動后交換”技術462
17.7特殊成員函數463
17.7.1默認移動成員464
17.7.25的規則464
17.7.30的規則465
17.8本章小結466
17.9練習466
第18章頭等函數467
18.1函數指針467
18.1.1定義函數指針467
18.1.2高階函數的回調函數469
18.1.3函數指針的類型別名471
18.2函數對象472
18.2.1基本的函數對象472
18.2.2標準函數對象473
18.2.3參數化函數對象474
18.3lambda表達式475
18.3.1定義lambda表達式475
18.3.2命名lambda閉包476
18.3.3向函數模板傳送lambda表達式476
18.3.4捕獲子句477
18.4std::function<>模板481
18.5本章小結482
18.6練習483
第19章容器與算法485
19.1容器485
19.1.1順序容器485
19.1.2棧和隊列488
19.1.3集合489
19.1.4映射491
19.2迭代器494
19.2.1迭代器設計模式495
19.2.2標準庫容器的迭代器496
19.2.3數組的迭代器502
19.3算法503
19.3.1第一個示例503
19.3.2尋找元素504
19.3.3輸出多個值505
19.3.4刪除-擦除技術507
19.3.5排序507
19.3.6并行算法508
19.4本章小結508
19.5練習509
序: