C++11程序設計(第2版 英文版)

C++11程序設計(第2版 英文版) pdf epub mobi txt 電子書 下載 2025

[美] Paul Deitel(保羅·戴特爾),[美] Harvey Deitel(哈維·戴特爾) 著
圖書標籤:
  • C++
  • C++11
  • Programming
  • Computer Science
  • Software Development
  • Second Edition
  • English
  • Books
  • Technical Books
  • Coding
  • Algorithms
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121272646
版次:2
商品編碼:11901447
品牌:Broadview
包裝:平裝
叢書名: 原味精品書係
開本:16開
齣版時間:2016-03-01
用紙:膠版紙
頁數:848
正文語種:英文

具體描述

産品特色

內容簡介

  《C++11程序設計(第2版)英文版》利用活代碼深入研究C++11 和C++ 標準庫。內容包括C++11 的新特性,基於模闆的標準庫容器、迭代器和算法,C++ 標準庫字符串,C++ 標準庫數組,構造重要類,麵嚮對象編程的案例研究,異常處理,等等。本書示例豐富,包含瞭從計算機科學、商業、模擬、遊戲和其他主題中挑選齣來的各種示例程序,並在三個具有工業強度的C++11 編譯器上對代碼進行瞭測試;書中配有大量的插圖,包括圖錶、綫條圖、UML 圖、程序和程序輸齣。
  《C++11程序設計(第2版)英文版》適閤具有一定高級語言編程背景的程序員閱讀。

作者簡介

  Paul Deitel,Deitel & Associates有限公司的CEO兼CTO,畢業於麻省理工學院,主修信息技術。通過Deitel & Associate有限公司,他已經為行業、政府機關和軍隊客戶提供瞭數百節編程課程,這些客戶包括思科、IBM、西門子、Sun Microsystems、戴爾、Fidelity、肯尼迪航天中心、美國國傢強風暴實驗室、白沙導彈試驗場、Rogue Wave Software、波音公司、SunGard Higher Education、北電網絡公司、彪馬、iRobot、Invensys等。他和本書的閤著者Harvey Deitel博士是暢銷全球的編程語言教材、專業書籍和視頻的作者。

  Harvey Deitel博士,Deitel & Associates有限公司的董事長和首席戰略官,在計算機領域中擁有五十多年的經驗。Deitel博士獲得瞭麻省理工學院電子工程(學習計算)的學士和碩士學位,並獲得瞭波士頓大學的數學博士學位(學習計算機科學)。在20世紀60年代,通過先進的計算機技術和計算機應用公司,他成為瞭創建各種IBM操作係統的團隊中的一員。在20世紀70年代,他創建瞭商業操作係統。他擁有豐富的大學教學經驗,在1991年與兒子Paul Deitel創辦Deitel & Associates有限公司之前,他是波士頓大學計算機科學係的主任,並獲得瞭終身任職權。Deitel的齣版物獲得瞭國際上的認可,並被翻譯為繁體中文、簡體中文、韓語、日語、德語、俄語、西班牙語、法語、波蘭語、意大利語、葡萄牙語、希臘語、烏爾都語和土耳其語。Deitel博士為很多大公司、學術研究機構、政府機關和軍方提供瞭數百場專業編程講座。

目錄

前言
1 Introduction
1.1 Introduction
1.2 C++
1.3 Object Technology
1.4 Typical C++ Development Environment
1.5 Test-Driving a C++ Application
1.6 Operating Systems
1.6.1 Windows―A Proprietary Operating System
1.6.2 Linux―An Open-Source Operating System
1.6.3 Apple’s OS X; Apple’s iOS for iPhone?, iPad? and iPod Touch? Devices
1.6.4 Google’s Android
1.7 C++11 and the Open Source Boost Libraries
1.8 Web Resources
2 Introduction to C++ Programming, Input/Output and Operators
2.1 Introduction
2.2 First Program in C++: Printing a Line of Text
2.3 Modifying Our First C++ Program
2.4 Another C++ Program: Adding Integers
2.5 Arithmetic
2.6 Decision Making: Equality and Relational Operators
2.7 Wrap-Up
3 Introduction to Classes, Objects and Strings
3.1 Introduction
3.2 Defining a Class with a Member Function
3.3 Defining a Member Function with a Parameter
3.4 Data Members, set Member Functions and get Member Functions
3.5 Initializing Objects with Constructors
3.6 Placing a Class in a Separate File for Reusability
3.7 Separating Interface from Implementation
3.8 Validating Data with set Functions
3.9 Wrap-Up
4 Control Statements: Part 1; Assignment, ++ and -- Operators
4.1 Introduction
4.2 Control Structures
4.3 if Selection Statement
4.4 if … else Double-Selection Statement
4.5 while Repetition Statement
4.6 Counter-Controlled Repetition
4.7 Sentinel-Controlled Repetition
4.8 Nested Control Statements
4.9 Assignment Operators
4.10 Increment and Decrement Operators
4.11 Wrap-Up
5 Control Statements: Part 2; Logical Operators
5.1 Introduction
5.2 Essentials of Counter-Controlled Repetition
5.3 for Repetition Statement
5.4 Examples Using the for Statement
5.5 do … while Repetition Statement
5.6 switch Multiple-Selection Statement
5.7 break and continue Statements
5.8 Logical Operators
5.9 Confusing the Equality ( == ) and Assignment ( = ) Operators
5.10 Wrap-Up
6 Functions and an Introduction to Recursion
6.1 Introduction
6.2 Math Library Functions
6.3 Function Definitions with Multiple Parameters
6.4 Function Prototypes and Argument Coercion
6.5 C++ Standard Library Headers
6.6 Case Study: Random Number Generation
6.7 Case Study: Game of Chance; Introducing enum
6.8 C++11 Random Numbers
6.9 Storage Classes and Storage Duration
6.10 Scope Rules
6.11 Function Call Stack and Activation Records
6.12 Functions with Empty Parameter Lists
6.13 Inline Functions
6.14 References and Reference Parameters
6.15 Default Arguments
6.16 Unary Scope Resolution Operator
6.17 Function Overloading
6.18 Function Templates
6.19 Recursion
6.20 Example Using Recursion: Fibonacci Series
6.21 Recursion vs. Iteration
6.22 Wrap-Up
7 Class Templates array and vector ;
Catching Exceptions
7.1 Introduction
7.2 array s
7.3 Declaring array s
7.4 Examples Using array s
7.4.1 Declaring an array and Using a Loop to Initialize the array ’s Elements
7.4.2 Initializing an array in a Declaration with an Initializer List
7.4.3 Specifying an array ’s Size with a Constant Variable and Setting array Elements with Calculations
7.4.4 Summing the Elements of an array
7.4.5 Using Bar Charts to Display array Data Graphically
7.4.6 Using the Elements of an array as Counters
7.4.7 Using array s to Summarize Survey Results
7.4.8 Static Local array s and Automatic Local array s
7.5 Range-Based for Statement
7.6 Case Study: Class GradeBook Using an array to Store Grades
7.7 Sorting and Searching array s
7.8 Multidimensional array s
7.9 Case Study: Class GradeBook Using a Two-Dimensional array
7.10 Introduction to C++ Standard Library Class Template vector
7.11 Wrap-Up
8 Pointers
8.1 Introduction
8.2 Pointer Variable Declarations and Initialization
8.3 Pointer Operators
8.4 Pass-by-Reference with Pointers
8.5 Built-In Arrays
8.6 Using const with Pointers
8.6.1 Nonconstant Pointer to Nonconstant Data
8.6.2 Nonconstant Pointer to Constant Data
8.6.3 Constant Pointer to Nonconstant Data
8.6.4 Constant Pointer to Constant Data
8.7 sizeof Operator
8.8 Pointer Expressions and Pointer Arithmetic
8.9 Relationship Between Pointers and Built-In Arrays
8.10 Pointer-Based Strings
8.11 Wrap-Up
9 Classes: A Deeper Look; Throwing Exceptions
9.1 Introduction
9.2 Time Class Case Study
9.3 Class Scope and Accessing Class Members
9.4 Access Functions and Utility Functions
9.5 Time Class Case Study: Constructors with Default Arguments
9.6 Destructors
9.7 When Constructors and Destructors Are Called
9.8 Time Class Case Study: A Subtle Trap―Returning a Reference or a Pointer to a private Data Member
9.9 Default Memberwise Assignment
9.10 const Objects and const Member Functions
9.11 Composition: Objects as Members of Classes
9.12 friend Functions and friend Classes
9.13 Using the this Pointer
9.14 static Class Members
9.15 Wrap-Up
10 Operator Overloading; Class string
10.1 Introduction
10.2 Using the Overloaded Operators of Standard Library Class string
10.3 Fundamentals of Operator Overloading
10.4 Overloading Binary Operators
10.5 Overloading the Binary Stream Insertion and Stream Extraction Operators
10.6 Overloading Unary Operators
10.7 Overloading the Unary Prefix and Postfix ++ and -- Operators
10.8 Case Study: A Date Class
10.9 Dynamic Memory Management
10.10 Case Study: Array Class
10.10.1 Using the Array Class
10.10.2 Array Class Definition
10.11 Operators as Member vs. Non-Member Functions
10.12 Converting Between Types
10.13 explicit Constructors and Conversion Operators
10.14 Overloading the Function Call Operator ()
10.15 Wrap-Up
11 Object-Oriented Programming: Inheritance
11.1 Introduction
11.2 Base Classes and Derived Classes
11.3 Relationship between Base and Derived Classes
11.3.1 Creating and Using a CommissionEmployee Class
11.3.2 Creating a BasePlusCommissionEmployee Class Without Using Inheritance
11.3.3 Creating a CommissionEmployee ? BasePlusCommissionEmployee Inheritance Hierarchy
11.3.4 CommissionEmployee ? BasePlusCommissionEmployee Inheritance Hierarchy Using protected Data
11.3.5 CommissionEmployee ? BasePlusCommissionEmployee Inheritance Hierarchy Using private Data
11.4 Constructors and Destructors in Derived Classes
11.5 public , protected and private Inheritance
11.6 Software Engineering with Inheritance
11.7 Wrap-Up
12 Object-Oriented Programming: Polymorphism
12.1 Introduction
12.2 Introduction to Polymorphism: Polymorphic Video Game
12.3 Relationships Among Objects in an Inheritance Hierarchy
12.3.1 Invoking Base-Class Functions from Derived-Class Objects
12.3.2 Aiming Derived-Class Pointers at Base-Class Objects
12.3.3 Derived-Class Member-Function Calls via Base-Class Pointers
12.3.4 Virtual Functions and Virtual Destructors
12.4 Type Fields and switch Statements
12.5 Abstract Classes and Pure virtual Functions
12.6 Case Study: Payroll System Using Polymorphism
12.6.1 Creating Abstract Base Class Employee
12.6.2 Creating Concrete Derived Class SalariedEmployee
12.6.3 Creating Concrete Derived Class CommissionEmployee
12.6.4 Creating Indirect Concrete Derived Class BasePlusCommissionEmployee
12.6.5 Demonstrating Polymorphic Processing
12.7 (Optional) Polymorphism, Virtual Functions and Dynamic Binding“Under the Hood”
12.8 Case Study: Payroll System Using Polymorphism and Runtime Type Information with Downcasting, dynamic_cast , typeid and
type_info
12.9 Wrap-Up
13 Stream Input/Output: A Deeper Look
13.1 Introduction
13.2 Streams
13.2.1 Classic Streams vs. Standard Streams
13.2.2 iostream Library Headers
13.2.3 Stream Input/Output Classes and Objects
13.3 Stream Output
13.3.1 Output of char * Variables
13.3.2 Character Output Using Member Function put
13.4 Stream Input
13.4.1 get and getline Member Functions
13.4.2 istream Member Functions peek , putback and ignore
13.4.3 Type-Safe I/O
13.5 Unformatted I/O Using read , write and gcount
13.6 Introduction to Stream Manipulators
13.6.1 Integral Stream Base: dec , oct , hex and setbase
13.6.2 Floating-Point Precision ( precision , setprecision )
13.6.3 Field Width ( width , setw )
13.6.4 User-Defined Output Stream Manipulators
13.7 Stream Format States and Stream Manipulators
13.7.1 Trailing Zeros and Decimal Points ( showpoint )
13.7.2 Justification ( left , right and internal )
13.7.3 Padding ( fill , setfill )
13.7.4 Integral Stream Base ( dec , oct , hex , showbase )
13.7.5 Floating-Point Numbers; Scientific and Fixed Notation( scientific , fixed )
13.7.6 Uppercase/Lowercase Control ( uppercase )
13.7.7 Specifying Boolean Format ( boolalpha )
13.7.8 Setting and Resetting the Format State via Member Function flags
13.8 Stream Error States
13.9 Tying an Output Stream to an Input Stream
13.10 Wrap-Up
14 File Processing
14.1 Introduction
14.2 Files and Streams
14.3 Creating a Sequential File
14.4 Reading Data from a Sequential File
14.5 Updating Sequential Files
14.6 Random-Access Files
14.7 Creating a Random-Access File
14.8 Writing Data Randomly to a Random-Access File
14.9 Reading from a Random-Access File Sequentially
14.10 Case Study: A Transaction-Processing Program
14.11 Object Serialization
14.12 Wrap-Up
15 Standard Library Containers and Iterators
15.1 Introduction
15.2 Introduction to Containers
15.3 Introduction to Iterators
15.4 Introduction to Algorithms
15.5 Sequence Containers
15.5.1 vector Sequence Container
15.5.2 list Sequence Container
15.5.3 deque Sequence Container
15.6 Associative Containers
15.6.1 multiset Associative Container
15.6.2 set Associative Container
15.6.3 multimap Associative Container
15.6.4 map Associative Container
15.7 Container Adapters
15.7.1 stack Adapter
15.7.2 queue Adapter
15.7.3 priority_queue Adapter
15.8 Class bitset
15.9 Wrap-Up
16 Standard Library Algorithms
16.1 Introduction
16.2 Minimum Iterator Requirements
16.3 Algorithms
16.3.1 fill , fill_n , generate and generate_n
16.3.2 equal , mismatch and lexicographical_compare
16.3.3 remove , remove_if , remove_copy and remove_copy_if
16.3.4 replace , replace_if , replace_copy and replace_copy_if
16.3.5 Mathematical Algorithms
16.3.6 Basic Searching and Sorting Algorithms
16.3.7 swap , iter_swap and swap_ranges
16.3.8 copy_backward , merge , unique and reverse
16.3.9 inplace_merge , unique_copy and reverse_copy
16.3.10 Set Operations
16.3.11 lower_bound , upper_bound and equal_range
16.3.12 Heapsort
16.3.13 min , max , minmax and minmax_element
16.4 Function Objects
16.5 Lambda Expressions
16.6 Standard Library Algorithm Summary
16.7 Wrap-Up
17 Exception Handling: A Deeper Look
17.1 Introduction
17.2 Example: Handling an Attempt to Divide by Zero
17.3 Rethrowing an Exception
17.4 Stack Unwinding
17.5 When to Use Exception Handling
17.6 Constructors, Destructors and Exception Handling
17.7 Exceptions and Inheritance
17.8 Processing new Failures
17.9 Class unique_ptr and Dynamic Memory Allocation
17.10 Standard Library Exception Hierarchy
17.11 Wrap-Up
18 Introduction to Custom Templates
18.1 Introduction
18.2 Class Templates
18.3 Function Template to Manipulate a Class-Template Specialization Object
18.4 Nontype Parameters
18.5 Default Arguments for Template Type Parameters
18.6 Overloading Function Templates
18.7 Wrap-Up
19 Class string and String Stream Processing: A Deeper Look
19.1 Introduction
19.2 string Assignment and Concatenation
19.3 Comparing string s
19.4 Substrings
19.5 Swapping string s
19.6 string Characteristics
19.7 Finding Substrings and Characters in a string
19.8 Replacing Characters in a string
19.9 Inserting Characters into a string
19.10 Conversion to Pointer-Based char * Strings
19.11 Iterators
19.12 String Stream Processing
19.13 C++11 Numeric Conversion Functions
19.14 Wrap-Up
20 Bits, Characters, C Strings and struct s
20.1 Introduction
20.2 Structure Definitions
20.3 typedef
20.4 Example: Card Shuffling and Dealing Simulation
20.5 Bitwise Operators
20.6 Bit Fields
20.7 Character-Handling Library
20.8 C String-Manipulation Functions
20.9 C String-Conversion Functions
20.10 Search Functions of the C String-Handling Library
20.11 Memory Functions of the C String-Handling Library
20.12 Wrap-Up
21 Other Topics
21.1 Introduction
21.2 const_cast Operator
21.3 mutable Class Members
21.4 namespace s
21.5 Operator Keywords
21.6 Pointers to Class Members ( .* and ->* )
21.7 Multiple Inheritance
21.8 Multiple Inheritance and virtual Base Classes
21.9 Wrap-Up
22 ATM Case Study, Part 1:Object-Oriented Design with the UML
22.1 Introduction
22.2 Introduction to Object-Oriented Analysis and Design
22.3 Examining the ATM Requirements Document
22.4 Identifying the Classes in the ATM Requirements Document
22.5 Identifying Class Attributes
22.6 Identifying Objects’ States and Activities
22.7 Identifying Class Operations
22.8 Indicating Collaboration Among Objects
22.9 Wrap-Up
23 ATM Case Study, Part 2:Implementing an Object-Oriented Design
23.1 Introduction
23.2 Starting to Program the Classes of the ATM System
23.3 Incorporating Inheritance into the ATM System
23.4 ATM Case Study Implementation
23.4.1 Class ATM
23.4.2 Class Screen
23.4.3 Class Keypad
23.4.4 Class CashDispenser
23.4.5 Class DepositSlot
23.4.6 Class Account
23.4.7 Class BankDatabase
23.4.8 Class Transaction
23.4.9 Class BalanceInquiry
23.4.10 Class Withdrawal
23.4.11 Class Deposit
23.4.12 Test Program ATMCaseStudy.cpp
23.5 Wrap-Up
A Operator Precedence and Associativity
B ASCII Character Set
C Fundamental Types
D Number Systems
D.1 Introduction
D.2 Abbreviating Binary Numbers as Octal and Hexadecimal Numbers
D.3 Converting Octal and Hexadecimal Numbers to Binary Numbers
D.4 Converting from Binary, Octal or Hexadecimal to Decimal
D.5 Converting from Decimal to Binary, Octal or Hexadecimal
D.6 Negative Binary Numbers: Two’s Complement Notation
E Preprocessor
E.1 Introduction
E.2 #include Preprocessing Directive
E.3 #define Preprocessing Directive: Symbolic Constants
E.4 #define Preprocessing Directive: Macros
E.5 Conditional Compilation
E.6 #error and #pragma Preprocessing Directives
E.7 Operators # and ##
E.8 Predefined Symbolic Constants
E.9 Assertions
E.10 Wrap-Up
Index
綫上章節及附錄
第 24 章及附錄 F~K 為 PDF 文檔

前言/序言

  “語言的首要價值是清晰……”
  ——Galen
  歡迎閱讀本書。本書會嚮軟件開發人員介紹最先進的計算技術。
  我們專注於軟件工程的最佳實踐。本書沿用瞭Deitel特色的“程序實況解說”風格——用完整的可運行程序(而不是代碼片段)來解釋相關概念。每個完整的代碼示例都配有生動的示例。所有的源代碼都可以從下麵的網址下載:
  如果你在閱讀本書時遇到任何睏難,請發送郵件到:
  我們會及時迴復你。要瞭解本書的最新信息,加入我們的Facebook社區、Twitter社區、Google+社區和LinkedIn社區,你還可以訂閱Deitel Buzz Online電子郵件新聞簡報。
  本書特色
  本書的主要特色如下所述。
  C++11標準
  2011年發布的C++11新標準是我們寫這本書的動機。我們使用標有“11”的圖標來錶示在本書中提到的每個C++11新特性,如本頁的空白處所示。這一版包含的一些C++11特性如下。
  符閤C++11新標準。廣泛地覆蓋瞭C++11的新特性。
  在3個具有工業強度的C++11編譯器上對代碼進行瞭測試。我們在GNU C++ 4.7、Microsoft Visual C++ 2012和Apple Xcode 4.5的LLVM上對代碼示例進行瞭測試。
  智能指針。智能指針可以幫助你避免動態由於提供瞭內置指針無法實現的功能而導緻的內存管理錯誤。我們將在第17章討論unique_ptr,在第24章討論shared_ptr和weak_ptr。
  更早地介紹基於模闆的標準庫容器、迭代器和算法,並用C++11新特性對這些內容進行瞭擴充。我們將第1版中位於第20章的標準庫容器、迭代器和算法的處理移到瞭第15章和第16章,並且使用C++11新特性對這些內容進行瞭擴充。你需要的絕大多數數據結構都可以通過重用這些標準庫來實現。
  在綫閱讀第24章。我們將在這一章介紹C++11的其他主題。C++11新標準是在2011年發布的,但並非所有的C++編譯器都完全支持這些特性。在我們編寫本書時,如果某個C++特性已經在這3個主要的編譯器中實現瞭,我們就用文本和代碼實例來介紹該特性。如果這3個編譯器都沒有實現該特性,我們就用粗斜體標題和對這個特性的簡短說明來介紹它。當這些特性被編譯器實現時,我們就會在第24章對這些簡短說明進行擴充。之所以將本章放在網上,是因為這樣做我們就可以動態更新其內容。本章包含對正則錶達式、shared_ptr和weak_ptr智能指針、移動語義等的討論。你可以通過以下網址訪問本章:
  R隨機數生成、模擬和遊戲。為瞭讓程序更安全(參見下一頁的“C++安全編程”一節),我們會在本書中討論C++11的非確定性隨機數生成機製。
  麵嚮對象程序設計
  提早介紹對象。我們在本書的第1章就介紹瞭對象技術的基本概念和術語,在第3章將會帶你開發一個自定義的C++類和對象。
  C++標準庫字符串。C++提供瞭兩種類型的字符串——字符串類對象(從第3章開始使用)和C字符串(來自C語言)。我們用C++字符串類的實例替換瞭大多數C字符串,以便讓程序變得更健壯,並消除C字符串帶來的很多安全問題。我們稍後會在本書中討論C字符串,以便讓你能夠使用工業上的遺留代碼。在新的開發項目中,你應該支持字符串對象。
  C++標準庫數組。我們在本書中使用的主要是標準庫的數組類模闆,而不是內置的、C風格的、基於指針的數組。但我們還是會介紹內置數組,因為它們仍然會被用在C++中,而且瞭解它纔能夠閱讀遺留代碼。C++提供瞭三種類型的數組——類模闆數組、vector(從第7章開始使用),以及C風格的、基於指針的數組(在第8章介紹)。我們在本書中會酌情使用模闆數組和類模闆vector(偶爾),而不是C數組。在新的開發項目中,你應該支持類模闆數組和vector。
  構造重要類。本書的一個主要目標是讓你構造重要的、可重用的C++類。在第10章的案例研究中,你將創建自己的自定義Array類。第10章以類模闆字符串的測試驅動開始,這樣在你使用重載操作符實現自己的自定義類前,可以先看到如何使用操作符重載。
  麵嚮對象編程的案例研究。我們提供瞭跨越多個章節並涵蓋瞭軟件開發生命周期的案例研究。這些案例研究包括第3~7章的GradeBook類,第9章的Time類和第11章、第12章的Employee類。第12章用詳細的圖錶說明瞭C++如何“在幕後”實現多態、虛函數和動態綁定。
  可選案例研究:使用UML創建一個ATM的麵嚮對象設計和C++實現。UML(統一建模語言,Unified Modeling Language)是為麵嚮對象係統建模的行業標準圖形化語言。我們在本書的前幾章就介紹瞭UML。第22章和第23章包含使用UML來進行麵嚮對象設計的可選案例研究。我們設計並實現瞭一個簡單的自動取款機(ATM)的軟件。我們分析瞭一個指定如何構建係統的典型需求文檔。我們確定瞭實現該係統所需要的類、這些類需要擁有的屬性和這些類需要錶現齣的行為,我們還指定瞭這些類必須如何交互纔能滿足係統需求。我們根據設計産生瞭一個完整的C++實現。讀者經常反饋說這個案例研究“將所有內容都聯係起來”,並讓他們對麵嚮對象有瞭更深入的瞭解。
  異常處理。在本書的前幾章就包含瞭基本的異常處理。你可以從第17章來瞭解異常處理的更多內容。
  主要的編程範式。我們在本書中討論瞭麵嚮對象編程和泛型編程。
  教學特色
  示例。本書包含瞭從計算機科學、商業、模擬、遊戲和其他主題中挑選齣來的各種示例程序。
  插圖和圖。本書包含瞭大量的圖錶、綫條圖、UML圖、程序和程序輸齣。
  其他特色
  指針。本書詳細地介紹瞭內置指針,以及內置指針、C字符串和內置數組之間的密切關係。
  調試器附錄。本書包含瞭3個調試器附錄——附錄H,講述Visual Studio調試器的使用;附錄I,講述GNU C++調試器的使用;附錄J,講述Xcode調試器的使用。
  C++安全編程
  很難創建齣可以抵抗病毒、蠕蟲等其他“惡意軟件”攻擊的、具有工業強度的係統。如今,通過互聯網,這類攻擊瞬間就可以對全球範圍造成影響。從開發周期的一開始就在軟件中加入安全性,可以大大減少安全風險。
  人們創建瞭CERT Coordination Center來分析和及時應對攻擊。CERT(計算機安全應急響應小組,Computer Emergency Response Team)是一個政府資助的組織,位於卡內基梅隆大學軟件工程研究所。CERT會發布和推廣各種流行編程語言的安全編碼標準,幫助軟件開發人員實現具有工業強度的係統,從而避免會造成開放式係統受到攻擊的編程實踐。
  我們要感謝Robert C. Seacord,他是CERT的安全編程管理員和卡內基梅隆大學計算機科學係的副教授。Seacord先生是C How to Program, 7e一書的技術評審,他從安全角度審查瞭這本書中的C語言程序,並建議我們遵守CERT C語言安全編程標準。
  本書也遵守CERT C++安全編碼標準指南(符閤書籍水平),你可以通過以下網址找到該指南:
  www.securecoding.cert.org
  我們很高興地發現,從20世紀90年代早期開始我們就在書籍中推薦瞭這些編程實踐。如果你要創建具有工業強度的C++係統,就一定不要錯過Secure Coding in C and C++, 2e(Robert Seacord,Addison-Wesley Professional齣版)。
  教學方法
  本書強調的是程序的清晰性,並專注於構建良好的軟件工程。
  程序實況解說。本書包含上百個“程序實況解說”示例——每個新概念都是在完整的可運行C++程序中提齣的,緊接著是顯示該程序輸入和輸齣的一個或者多個實際執行。
  語法著色。為瞭增加可讀性,我們為代碼添加瞭語法陰影,這與大多數IDE和代碼編輯器給代碼的語法添加顔色是類似的。我們采用的代碼的著色約定是:
  注釋用常規字體錶示
  關鍵字用粗黑字體錶示
  常量和字麵值用比關鍵字稍淺一點的粗灰字來錶示
  所有的其他代碼以黑體錶示
  代碼高亮顯示。本書在每個源代碼程序的關鍵代碼段都放置瞭一個灰色的矩形框。
  使用字體突齣顯示。為瞭便於參考,我們用粗體錶示每個定義性齣現的關鍵概念和索引的頁麵引用,用加粗的Helvetica字體來強調屏幕組件(例如,File菜單),用Lucida字體來強調C語言程序文本(例如,int x = 5;)。
  網頁存取。所有的源代碼示例都可以從以下網址下載:
  目標。每章都包含一個本章目標的列錶。
  編程技巧。我們提供瞭編程技巧來幫助你關注程序開發的重要方麵。這些技巧和實踐是我們在8年編程和企業培訓經驗中積纍的精華。最佳編程實踐
  最佳編程實踐讓讀者關注那些有助於産生更清晰、更易理解和維護程序的技術。
  常見編程錯誤
  指齣這些常見的編程錯誤可以降低讀者犯類似錯誤的可能性。
  錯誤預防技巧
  這些技巧包括揭露和刪除程序中bug的建議;大多數技巧描述的是如何預防將bug帶入C++程序中。
  性能技巧
  這些技巧強調的是如何讓程序運行得更快,或者盡量減少它們占用的內存。
  可移植性技巧
  可移植性技巧可以幫助你編寫能夠在各種平颱上運行的代碼。
  軟件工程意見
  軟件工程意見強調的是影響軟件係統(尤其是大型係統)構建的架構和設計問題。
  在綫章節和附錄
  下麵的章節和附錄可以在綫獲取。
  第24章,C++11的其他主題(C++11: Additional Features)。
  附錄F,C遺留代碼主題(C Legacy Code Topics)。
  附錄G,UML 2:其他圖錶類型(UML 2: Additional Diagram Types)。
  附錄H,Visual Studio調試器的使用(Using the Visual Studio Debugger)。
  附錄I,GNU C++調試器的使用(Using the GNU C++ Debugger)。
  附錄J,Xcode調試器的使用(Using the Xcode Debugger)。
  附錄K,對Mac OS X上C++程序的測試驅動(Test Driving a C++ Program on Mac OS X)。
  可以通過以下網址訪問在綫章節和附錄:
  www.informit.com/register
  你需要注冊一個InformIT賬號,並登錄。登錄後,你就能看到一個“Register a Product”框。輸入本書的ISBN(9780133439854)就可以訪問本書的在綫章節和附錄瞭。
  獲取本書使用的軟件
  本書的代碼示例是通過下麵的C++開發工具來編寫的:
  用於Windows桌麵的免費Visual Studio Express 2012,其中包含瞭Visual C++和其他Microsoft開發工具。它可以在Windows 7和Windows 8中運行,並可以從如下網址下載。
  www.microsoft.com/express
  GNU的免費GNU C++(gcc.gnu.org/install/binaries.html),其中大多數Linux係統都已經預先安裝瞭該編譯器,它還可以被安裝到Mac OS X和Windows係統中。
  Apple的免費Xcode,OS X用戶可以從Mac App Store中下載它。
  C++11基礎:LiveLessons視頻培訓産品的第I部分~第III部分
  “C++ 11基礎:LiveLessons視頻培訓産品的第I部分~第III部分”介紹瞭開始使用C++構建健壯的、強大的軟件時所需要知道的內容。它包含瞭二十多個小時與本書同步的專傢培訓。要瞭解關於Deitel LiveLesssons視頻産品的更多信息,請訪問
  www.deitel.com/livelessons
  或者可以通過deitel@deitel.com聯係我們。如果你已經訂閱瞭Safari Books Online(www.safaribooksonline.com),你還可以獲取我們的LiveLessons視頻。這些LiveLessons已於2013年夏季上綫。
  緻謝
  我們要感謝Deitel & Associates有限公司的Abbey Deitel和Barbara Deitel。他們為這個項目投入瞭大量時間。Abbey參與撰寫瞭本書的第1章和前言,她和Barbara仔細研究瞭C++11的新功能。
  我們有幸與Prentice Hall/Pearson的齣版專傢團隊共同完成該項目。我們要感謝培生科技齣版集團的主編Mark L. Taub給我們的指導和為此付齣的精力。我們要感謝Carole Snyder齣色地完成瞭招募優秀的C++社區成員來審稿的工作;感謝Chuti Prasertsith為本書設計瞭具有創造力和精確度的封麵——我們把自己對封麵的構想告訴他,而他準確地實現瞭它;感謝John Fuller齣色地完成瞭我們的Deitel開發人員係統圖書和LiveLessons視頻産品的齣版工作。
  審稿人員
  還要感謝本書審稿人員的付齣,他們提齣的建設性的批評意見幫助我們完成瞭本書的新版本。他們完成瞭對本書文本和程序的審查,並為提高本書的錶述方式提供瞭無數建議,他們是:Dean Michael Berris(榖歌,ISO C++委員會成員)、Danny Kaley(C++專傢,經過認證的係統分析師和C++標準委員會的前成員)、Linda M. Krause(艾姆赫斯特學院)、James P. McNellis(微軟公司)、Robert C.Seacord(SEI/CERT的安全編碼管理員、Secure Coding in C and C++一書的作者)、José Antonio González Seco(西班牙安達盧西亞議會議員)、Virginia Bailey(傑剋遜州立大學)、Thomas J. Borrelli(羅徹斯特理工學院)、Ed Brey(科勒有限公司)、Chris Cox(Adobe係統有限公司)、Gregory Dai(eBay)、Peter J. DePasquale(美國新澤西學院)、John Dibling(SpryWare)、Susan Gauch(阿肯色大學)、Doug Gregor(蘋果公司)、Jack Hagemeister(華盛頓州立大學)、Williams M. Higdon(美國印第安納大學)、Anne B. Horton(Lockheed Martin公司)、Terrell Hull(Logicalis集成解決方案)、Ed James-Beckham(Borland公司)、Wing-Ning Li(阿肯色大學)、Dean Mathias(猶他州立大學)、Robert A. McLain(潮水社區學院)、Robert Myers(佛羅裏達州立大學)、Gavin Osborne(薩斯喀徹溫省應用科技學院)、Amar Raheja(加利福尼亞大學波莫納分校)、April Reagan(微軟)、Raymond Stephenson(微軟)、Dave Topham(美國奧龍尼學院)、Anthony Williams(作傢和C++標準委員會成員)和Chad Willwerth(華盛頓大學塔科馬分校)。
  真誠地歡迎讀者提齣可以提高本書質量的意見、批評、更正和建議,請將它們發送
  我們會及時迴復你。我們在編寫本書時享受到瞭很多樂趣。希望你也能在本書的閱讀過程中得到樂趣。
  Paul Deitel
  Harvey Deitel


《C++11程序設計(第2版)》:一本現代C++編程的深度指南 《C++11程序設計(第2版)》是一本旨在全麵深入地講解C++11標準的權威著作。本書在原有基礎上進行瞭修訂與完善,不僅涵蓋瞭C++11引入的各項核心特性,更深入探討瞭這些特性在實際編程中的應用、設計理念以及最佳實踐。對於希望掌握現代C++編程精髓、提升代碼質量和開發效率的開發者而言,本書無疑是一本不可或缺的參考。 本書的獨到之處與價值體現 本書並非簡單羅列C++11的新增語法,而是著力於構建起一套完整的現代C++編程思維體係。作者以清晰的邏輯、豐富的實例和嚴謹的論述,引導讀者理解C++11的強大之處,並學會如何將其運用於解決實際編程問題。 一、 C++11核心特性的深度解析 本書對C++11引入的各項重要特性進行瞭細緻入微的講解,力求讓讀者不僅知其然,更知其所以然。 自動類型推導(`auto`)與統一初始化(Uniform Initialization): 自動類型推導極大地簡化瞭變量聲明,減少瞭冗餘,提高瞭代碼的可讀性。本書詳細闡述瞭`auto`在不同上下文中的行為,以及其與迭代器、函數返迴類型等結閤時的強大威力。統一初始化,特彆是使用花括號 `{}` 的初始化方式,為各種類型的對象提供瞭更一緻、更安全、更易於理解的初始化機製,避免瞭令人頭疼的“most vexing parse”問題。書中會深入剖析其在類成員、數組、STL容器等場景下的應用,以及它如何與列錶初始化(list initialization)協同工作。 右值引用(Rvalue References)與移動語義(Move Semantics): 這是C++11中最具革命性的特性之一,對性能優化有著至關重要的作用。本書將詳細介紹右值(rvalue)和左值(lvalue)的概念,以及右值引用的語法。在此基礎上,會深入講解移動構造函數(move constructor)、移動賦值運算符(move assignment operator)以及`std::move`和`std::forward`等輔助工具。通過豐富的示例,讀者將理解如何利用移動語義來避免不必要的拷貝,從而顯著提升處理大型對象(如字符串、嚮量、文件流等)時的性能,特彆是在函數返迴值優化(RVO)和返迴值優化(NRVO)結閤使用時,其效果尤為顯著。 智能指針(Smart Pointers): 內存泄漏是C++編程中一個普遍存在且難以調試的問題。C++11引入的智能指針,如`std::unique_ptr`、`std::shared_ptr`和`std::weak_ptr`,提供瞭一種 RAII(Resource Acquisition Is Initialization)的現代內存管理方式,極大地降低瞭內存泄漏的風險。本書會詳細解析這三種智能指針的設計理念、使用場景、性能特點以及它們之間的區彆與聯係。讀者將學會如何使用它們來管理動態分配的資源,並理解其如何與容器、函數等協同工作,實現自動化的資源釋放。 Lambda錶達式(Lambda Expressions): Lambda錶達式為創建匿名函數對象提供瞭簡潔、靈活的方式,尤其是在需要傳遞簡單函數作為參數時(例如STL算法)。本書會深入講解Lambda錶達式的語法,包括參數列錶、捕獲列錶(值捕獲、引用捕獲、默認捕獲)以及返迴值推導。通過大量實例,讀者將學會如何利用Lambda錶達式來簡化代碼,編寫更具錶現力、更易於維護的算法,例如在`std::for_each`、`std::sort`、`std::transform`等算法中。 並發與並行編程(Concurrency and Parallelism): 隨著多核處理器的普及,並發和並行編程已成為提升程序性能的關鍵。C++11提供瞭標準庫支持,包括綫程(`std::thread`)、互斥量(`std::mutex`)、條件變量(`std::condition_variable`)、原子操作(`std::atomic`)以及Future/Promise機製(`std::future`、`std::promise`)。本書將詳細介紹這些工具的使用方法,並引導讀者理解並發編程的基本概念,如競態條件(race condition)、死鎖(deadlock)等,以及如何通過鎖機製和原子操作來編寫安全、高效的並發程序。 範圍for循環(Range-based for loop): 範圍for循環為遍曆容器或序列提供瞭更簡潔、更自然的語法,消除瞭手動管理迭代器或索引的繁瑣。本書會展示範圍for循環在各種容器(數組、`std::vector`、`std::list`、`std::map`等)上的應用,以及如何結閤`auto`關鍵字來進一步簡化代碼。 新STL容器與算法: C++11在STL方麵也有許多重要的改進,例如新增瞭`std::array`(固定大小的數組)、`std::forward_list`(單嚮鏈錶)以及一係列新的算法。本書將對這些新組件進行詳細介紹,並闡述它們在不同場景下的適用性。 二、 設計模式與最佳實踐 除瞭核心特性的講解,本書更注重將這些特性融入到現代C++的設計模式和最佳實踐中。 麵嚮對象設計的進化: C++11的特性使得麵嚮對象設計更加強大和靈活。本書會探討如何結閤右值引用和移動語義來優化對象的拷貝和賦值,從而實現更高效的資源管理。同時,也會介紹如何利用Lambda錶達式和智能指針來編寫更簡潔、更安全的麵嚮對象代碼。 泛型編程與STL的深入應用: 泛型編程是C++的核心優勢之一。本書將引導讀者更深入地理解STL的工作原理,並學會如何編寫高效的模闆代碼。通過對STL算法和容器的深入剖析,以及如何與C++11的新特性結閤,讀者將能夠構建齣更強大、更具復用性的代碼庫。 性能優化的藝術: C++語言以其高性能著稱,而C++11的許多特性正是為瞭進一步提升性能而設計的。本書會從多個角度講解性能優化,包括避免不必要的拷貝、利用移動語義、選擇閤適的容器和算法、以及編寫高效的並發代碼。 代碼的可讀性與可維護性: 盡管C++語言功能強大,但寫齣清晰、易於理解和維護的代碼同樣重要。本書將強調如何利用C++11的新特性來寫齣更具錶現力、更簡潔的代碼,從而提升整體的可讀性和可維護性。 三、 適閤的讀者群體 本書適閤以下人群: C++初學者: 對於有一定編程基礎,但希望學習現代C++的初學者,本書將提供一個堅實的基礎。 有經驗的C++開發者: 對於已經熟悉C++但希望深入瞭解和掌握C++11及以後版本特性的開發者,本書將提供寶貴的見解和實踐指導。 希望提升代碼質量和性能的開發者: 本書將教授如何利用C++11的特性來編寫更高效、更健壯、更易於維護的代碼。 從事係統編程、遊戲開發、高性能計算等領域的開發者: 這些領域對C++的性能和底層控製要求較高,本書中的許多內容將直接適用於這些場景。 結語 《C++11程序設計(第2版)》並非一本簡單的教程,而是一本能夠陪伴開發者不斷成長、不斷精進的“武林秘籍”。通過對本書的學習,讀者將能夠深刻理解現代C++的精髓,並將其轉化為實際的開發優勢,編寫齣更優秀、更具競爭力的軟件。這是一次對C++語言深度探索的旅程,也是一次對自身編程技藝的全麵升級。

用戶評價

評分

我是一名已經從事C++開發多年的工程師,但一直覺得在C++11的新特性方麵還存在一些盲點。偶然間發現瞭這本《C++11程序設計(第2版 英文版)》,抱著試試看的心態翻閱,結果驚喜不斷。這本書的深度和廣度都超齣瞭我的預期。作者在講解每個新特性時,不僅僅是介紹它“是什麼”,更重要的是解釋它“為什麼”被設計齣來,以及它在實際開發中能解決哪些痛點。特彆是對移動語義和完美轉發的講解,簡直是業界典範,我之前對這塊的理解一直模模糊糊,讀完之後豁然開朗。書中還包含瞭很多關於標準庫的介紹,比如STL的各種算法和容器在新版本中的改進,以及新加入的並發庫的使用等等,這些都是我們在日常開發中經常會遇到的問題。這本書讓我對C++11有瞭更全麵、更深刻的認識,也激發瞭我對C++語言本身更深層次的探索欲望。

評分

這本書就像一股清流,在C++這片早已被海量教材淹沒的海洋中,為我指明瞭一條清晰的航嚮。我尤其欣賞它對C++11新特性的闡述,那些曾經讓我頭疼不已的lambda錶達式、右值引用、智能指針等,在這本書裏被拆解得如此透徹,仿佛一個經驗豐富的嚮導,一步步引領我穿越迷霧。不僅僅是概念的堆砌,書中穿插的大量實戰案例更是讓我愛不釋手。那些精心設計的代碼片段,不僅僅是為瞭演示某個特性,而是將它巧妙地融入到實際的編程場景中,讓我能立刻體會到新特性帶來的好處,比如更簡潔的代碼、更安全的內存管理,以及更高效的並發編程。讀這本書的過程,更像是在與一位資深的C++工程師進行一對一的交流,他不僅傳授知識,更分享瞭寶貴的經驗和最佳實踐。從基礎語法的迴顧,到高級特性的深入剖析,再到麵嚮對象設計原則的講解,每一個環節都銜接得恰到好處,讓我感覺知識體係在不斷完善和鞏固。這本書對於想要深入理解C++11精髓的開發者來說,絕對是不可多得的寶藏,它不僅僅是一本技術手冊,更像是一本能夠啓發思考、提升編程品味的藝術品。

評分

這本書的英文原版,恰到好處地保留瞭C++11那些精煉且富有錶現力的語言風格。我一直在尋找一本能夠真正幫助我“理解”C++11,而不是簡單“記住”它的書籍,而這本《C++11程序設計》無疑滿足瞭我的需求。它深入淺齣地剖析瞭C++11的各個方麵,從最基礎的類型推導到復雜的並發模型,作者都給予瞭詳盡的解釋和恰當的示例。尤其是它對RAII(Resource Acquisition Is Initialization)模式的強調,以及如何利用C++11的特性(如智能指針)更好地實踐這一模式,對我來說是受益匪淺。在閱讀過程中,我能感受到作者在編寫這本書時,對每一個細節都進行瞭反復斟酌,力求將最清晰、最準確的信息傳遞給讀者。它不是一本僅僅羅列新特性的速查手冊,而是一本引導讀者理解C++11設計哲學,並將其應用於實際開發的深度指南。這本書幫助我提升瞭代碼的抽象能力和設計能力,讓我能夠寫齣更具可維護性、可擴展性和健壯性的C++程序。

評分

初次翻開這本書,就被它那直觀而富有條理的排版吸引瞭。每個章節都圍繞著一個核心主題展開,理論講解清晰明瞭,輔以大量的代碼示例,簡直是學習C++11的最佳伴侶。我特彆喜歡它在講解某些復雜概念時,采用的類比和圖示。比如,在解釋完美轉發時,作者用瞭一個非常生動的比喻,瞬間就讓我茅塞頓開,之前睏擾我許久的難題迎刃而解。書中的代碼質量也非常高,每一段代碼都經過精心打磨,簡潔、高效,而且充滿瞭智慧。不僅僅是枯燥的技術講解,作者在字裏行間流露齣的對C++的熱情和深刻理解,也深深地感染瞭我。閱讀這本書,就像在與一位老友暢談,他用最平實的語言,將最深奧的知識娓娓道來。它幫助我建立起瞭一個紮實的C++11知識體係,讓我在麵對實際項目時,能夠更加自信地運用新特性,寫齣更具現代感、更具可讀性的代碼。這本書的價值,遠不止於技術本身,更在於它所傳遞的編程思想和解決問題的能力。

評分

這本書的結構設計堪稱完美,層層遞進,循序漸進。從C++11的基礎語法和核心概念入手,逐步深入到更復雜的範式和高級特性。我認為它最齣色的地方在於,能夠將抽象的理論知識與具體的編程實踐完美結閤。作者在闡述每一個新特性時,都配有高質量、可運行的代碼示例,而且這些示例都經過精心設計,能夠清晰地展示齣該特性的應用場景和優勢。我尤其欣賞書中對於“如何使用C++11編寫更現代化、更高效的代碼”的探討,它不僅僅是介紹新語法,更是引導讀者去思考如何利用這些新工具來優化設計、提升性能、減少錯誤。讀完這本書,我感覺自己對C++這門語言的理解上瞭一個新的颱階,編程思維也得到瞭極大的提升。這本書對於任何想要精通C++11,並將其融入到實際開發中的程序員來說,都是一本不可或缺的參考書。

評分

很好很好很好很好很好很好

評分

bsbsnsnnsmsskskjsjhj

評分

評分

評分

很好很好很好很好很好很好

評分

很好很好很好很好很好很好

評分

嗬嗬哈哈哈姐姐

評分

很好很好很好很好很好很好

評分

很好很好很好很好很好很好

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有