C++學習資料
很多學生朋友C++掌握的不夠扎實,推薦一個免費品質不錯的學習網站。

www.learncpp.com
簡介/入門
0.1這些教程的介紹
0.2編程語言簡介
0.3C/C++ 簡介
0.4C++開發簡介
0.5編譯器、鏈接器和庫簡介
0.6安裝集成開發環境 (IDE)
0.7編譯你的第一個程序
0.8幾個常見的 C++ 問題
0.9配置編譯器:構建配置
0.10配置編譯器:編譯器擴展
0.11配置編譯器:警告和錯誤級別
0.12配置編譯器:選擇語言標準
C++ 基礎
1.1語句和程序結構
1.2注釋
1.3對象和變量簡介
1.4變量賦值和初始化
1.5iostream 簡介:cout、cin 和 endl
1.6未初始化的變量和未定義的行為
1.7關鍵字和命名標識符
1.8空格和基本格式
1.9文字和運算符簡介
1.10表達式介紹
1.11開發你的第一個程序
1.x第一章總結與測驗
第2章
C++ 基礎:函數和文件
2.1功能介紹
2.2函數返回值
2.3函數參數和實參介紹
2.4局部作用域簡介
2.5為什么函數有用,以及如何有效地使用它們
2.6前向聲明和定義
2.7具有多個代碼文件的程序
2.8命名沖突和命名空間介紹
2.9預處理器簡介
2.10頭文件
2.11頭球后衛
2.12如何設計你的第一個程序
2.x第2章總結與測驗
第3章
調試 C++ 程序
3.1語法和語義錯誤
3.2調試過程
3.3調試策略
3.4基本調試策略
3.5更多調試策略
3.6使用集成調試器:步進
3.7使用集成調試器:運行和斷點
3.8使用集成調試器:觀察變量
3.9使用集成調試器:調用堆棧
3.10在問題變成問題之前發現問題
3.x第三章總結與測驗
第 4 章
基本數據類型
4.1基本數據類型簡介
4.2空白
4.3對象大小和 sizeof 運算符
4.4有符號整數
4.5無符號整數,以及為什么要避免它們
4.6固定寬度整數和 size_t
4.7科學記數法簡介
4.8浮點數字
4.9布爾值
4.10if 語句簡介
4.11字符
4.12類型轉換和 static_cast 簡介
4.13std::string 簡介
4.14字面常量
更新
4.15符號常量:const 和 constexpr 變量
更新
4.x第4章總結與測驗
第 5 章
運營商
5.1運算符優先級和結合性
5.2算術運算符
5.3模數和指數
5.4遞增/遞減運算符和副作用
5.5逗號和條件運算符
5.6關系運算符和浮點比較
5.7邏輯運算符
5.x第5章總結與測驗
第 O 章
位操作(可選章節)
O.1通過 std::bitset 進行位標志和位操作
O.2位運算符
O.3使用位運算符和位掩碼進行位操作
O.4二進制和十進制之間的轉換
第 6 章
范圍、持續時間和聯系
6.1復合語句(塊)
6.2用戶定義的命名空間和范圍解析運算符
6.3局部變量
6.4全局變量介紹
6.5可變陰影(名稱隱藏)
6.6內部聯動
6.7外部聯動
6.8為什么(非常量)全局變量是邪惡的
6.9跨多個文件共享全局常量(使用內聯變量)
6.10靜態局部變量
6.11范圍、持續時間和鏈接摘要
6.12使用聲明和使用指令
6.13未命名和內聯命名空間
6.x第6章總結與測驗
第七章
控制流和錯誤處理
7.1控制流程介紹
7.2If 語句和塊
7.3常見的 if 語句問題
7.4Switch 語句基礎知識
7.5切換失敗和范圍
7.6轉到語句
7.7循環和 while 語句簡介
7.8執行 while 語句
7.9對于語句
7.10中斷并繼續
7.11暫停(提前退出程序)
7.12測試代碼簡介
7.13代碼覆蓋率
7.14C++ 中的常見語義錯誤
7.15檢測和處理錯誤
7.16std::cin 和處理無效輸入
7.17斷言和靜態斷言
7.18隨機數生成簡介
更新
7.19使用 Mersenne Twister 生成隨機數
更新
7.x第7章總結與測驗
更新
第 8 章
類型轉換和函數重載
8.1
隱式類型轉換(強制)
8.2
浮點和積分提升
8.3
數值轉換
8.4
算術轉換
8.5
顯式類型轉換(強制轉換)和 static_cast
8.6
類型定義和類型別名
8.7
使用 auto 關鍵字對對象進行類型推導
8.8
函數的類型推導
8.9
函數重載介紹
8.10
函數過載區分
8.11
函數重載解析和模糊匹配
8.12
默認參數
8.13
函數模板
8.14
函數模板實例
8.15
具有多種模板類型的函數模板
8.x
第8章總結與測驗
1 月 18 日:第 9 章已更新!
第 9 章
復合類型
9.1
復合數據類型簡介
更新
9.2
值類別(左值和右值)
更新
9.3
左值引用
更新
9.4
對 const 的左值引用
更新
9.5
通過左值引用傳遞
更新
9.6
指針簡介
更新
9.7
空指針
更新
9.8
指針和常量
更新
9.9
通過地址
更新
9.10
通過地址傳遞(第 2 部分)
更新
9.11
按引用返回和按地址返回
更新
9.12
使用指針、引用和 const 進行類型推導
新的
9.13
程序定義(用戶定義)類型簡介
更新
9.14
無范圍枚舉
更新
9.15
無范圍枚舉輸入和輸出
更新
9.16
范圍枚舉(枚舉類)
更新
9.17
結構、成員和成員選擇簡介
更新
9.18
結構聚合初始化
更新
9.19
默認成員初始化
更新
9.20
結構傳遞和雜項
更新
9.21
使用指針和引用選擇成員
更新
9.x
第9章總結與測驗
更新
9.y
使用語言參考
第 10 章
數組、字符串、指針和引用
10.1
數組(第一部分)
10.2
數組(第二部分)
10.3
數組和循環
10.4
使用選擇排序對數組進行排序
10.5
多維數組
10.6
C 風格的字符串
10.7
std::string_view 簡介
10.8
指針和數組
10.9
指針算術和數組索引
10.10
C 風格的字符串符號常量
10.11
使用 new 和 delete 進行動態內存分配
10.12
動態分配數組
10.13
For-each 循環
10.14
無效指針
10.15
指向指針和動態多維數組的指針
10.16
std::array 簡介
10.17
std::vector 簡介
10.18
迭代器簡介
10.19
標準庫算法簡介
10.x
第10章綜合測驗
第11章
職能
11.1
內聯函數
11.2
函數指針
11.3
棧和堆
11.4
std::vector 容量和堆棧行為
11.5
遞歸
11.6
命令行參數
11.7
省略號(以及為什么要避免它們)
11.8
lambda 簡介(匿名函數)
11.9
Lambda 捕獲
11.x
第11章綜合測驗
第十二章
基本的面向對象編程
12.1
歡迎來到面向對象編程
12.2
班級和班級成員
12.3
公共與私有訪問說明符
12.4
訪問函數和封裝
12.5
構造函數
12.6
構造函數成員初始化器列表
12.7
非靜態成員初始化
12.8
重疊和委托構造函數
12.9
析構函數
12.10
隱藏的“this”指針
12.11
類代碼和頭文件
12.12
const 類對象和成員函數
12.13
靜態成員變量
12.14
靜態成員函數
12.15
朋友函數和類
12.16
匿名對象
12.17
類中的嵌套類型
12.18
計時你的代碼
12.x
第12章綜合測驗
第十三章
運算符重載
13.1
運算符重載介紹
13.2
使用友元函數重載算術運算符
13.3
使用普通函數重載運算符
13.4
重載 I/O 操作符
13.5
使用成員函數重載運算符
13.6
重載一元運算符 +、- 和 !
13.7
重載比較運算符
13.8
重載遞增和遞減運算符
13.9
重載下標運算符
13.10
重載括號運算符
13.11
重載類型轉換
13.12
復制構造函數
13.13
復制初始化
13.14
轉換構造函數、顯式和刪除
13.15
重載賦值運算符
13.16
淺拷貝與深拷貝
13.17
重載運算符和函數模板
13.x
第13章綜合測驗
第十四章
留作未來重組
第15章
留作未來重組
第十六章
對象關系簡介
16.1
對象關系
16.2
作品
16.3
聚合
16.4
協會
16.5
依賴項
16.6
容器類
16.7
std::initializer_list
16.x
第16章綜合測驗
第十七章
遺產
17.1
繼承介紹
17.2
C++中的基本繼承
17.3
派生類的構造順序
17.4
派生類的構造函數和初始化
17.5
繼承和訪問說明符
17.6
向派生類添加新功能
17.7
調用繼承的函數和覆蓋行為
17.8
隱藏繼承的功能
17.9
多重繼承
17.x
第17章綜合測驗
第十八章
虛函數
18.1
指向派生對象基類的指針和引用
18.2
虛函數和多態
18.3
override 和 final 說明符,以及協變返回類型
18.4
虛擬析構函數、虛擬分配和覆蓋虛擬化
18.5
早期綁定和后期綁定
18.6
虛擬表
18.7
純虛函數、抽象基類和接口類
18.8
虛擬基類
18.9
對象切片
18.10
動態鑄造
18.11
使用 operator<< 打印繼承的類
18.x
第18章綜合測驗
第十九章
模板和類
19.1
模板類
19.2
模板非類型參數
19.3
函數模板特化
19.4
類模板專業化
19.5
部分模板專業化
19.6
指針的部分模板特化
19.x
第19章綜合測驗
第20章
例外
20.1
例外的必要性
20.2
基本異常處理
20.3
異常、函數和堆棧展開
20.4
未捕獲的異常和包羅萬象的處理程序
20.5
異常、類和繼承
20.6
重新拋出異常
20.7
功能嘗試塊
20.8
異常的危險和缺點
20.9
異常規范和 noexcept
20.x
第20章綜合測驗
第 M 章
移動語義和智能指針
M.1
智能指針和移動語義簡介
M.2
R 值參考
M.3
移動構造函數和移動賦值
M.4
標準::移動
M.5
std::move_if_noexcept
M.6
std::unique_ptr
M.7
std::shared_ptr
M.8
std::shared_ptr 和 std::weak_ptr 的循環依賴問題
MX
M章綜合回顧
第21章
標準模板庫
21.1
標準庫
21.2
STL 容器概述
21.3
STL 迭代器概述
21.4
STL 算法概述
第22章
標準::字符串
22.1
std::string 和 std::wstring
22.2
std::string 構造和銷毀
22.3
std::string 長度和容量
22.4
std::string 字符訪問和轉換為 C 樣式數組
22.5
std::string 賦值和交換
22.6
std::string 附加
22.7
std::string 插入
第23章
輸入和輸出 (I/O)
23.1
輸入和輸出 (I/O) 流
23.2
使用 istream 輸入
23.3
使用 ostream 和 ios 輸出
23.4
字符串的流類
23.5
流狀態和輸入驗證
23.6
基本文件 I/O
23.7
隨機文件 I/O
附錄 A
雜項科目
A.1
靜態和動態庫
A2
在 Visual Studio 中使用庫
A.3
使用帶有 Code::Blocks 的庫
附錄 B
C++ 更新
B.1
C++11 簡介
B.2
C++14 簡介
B.3
C++17 簡介
B.4
C++20 簡介
附錄 C
結束
C.1
結束?
Introduction / Getting Started
0.1
Introduction to these tutorials
0.2
Introduction to programming languages
0.3
Introduction to C/C++
0.4
Introduction to C++ development
0.5
Introduction to the compiler, linker, and libraries
0.6
Installing an Integrated Development Environment (IDE)
0.7
Compiling your first program
0.8
A few common C++ problems
0.9
Configuring your compiler: Build configurations
0.10
Configuring your compiler: Compiler extensions
0.11
Configuring your compiler: Warning and error levels
0.12
Configuring your compiler: Choosing a language standard
Chapter 2
C++ Basics: Functions and Files
2.1
Introduction to functions
2.2
Function return values
2.3
Introduction to function parameters and arguments
2.4
Introduction to local scope
2.5
Why functions are useful, and how to use them effectively
2.6
Forward declarations and definitions
2.7
Programs with multiple code files
2.8
Naming collisions and an introduction to namespaces
2.9
Introduction to the preprocessor
2.10
Header files
2.11
Header guards
2.12
How to design your first programs
2.x
Chapter 2 summary and quiz
Chapter 3
Debugging C++ Programs
3.1
Syntax and semantic errors
3.2
The debugging process
3.3
A strategy for debugging
3.4
Basic debugging tactics
3.5
More debugging tactics
3.6
Using an integrated debugger: Stepping
3.7
Using an integrated debugger: Running and breakpoints
3.8
Using an integrated debugger: Watching variables
3.9
Using an integrated debugger: The call stack
3.10
Finding issues before they become problems
3.x
Chapter 3 summary and quiz
Chapter 4
Fundamental Data Types
4.1
Introduction to fundamental data types
4.2
Void
4.3
Object sizes and the sizeof operator
4.4
Signed integers
4.5
Unsigned integers, and why to avoid them
4.6
Fixed-width integers and size_t
4.7
Introduction to scientific notation
4.8
Floating point numbers
4.9
Boolean values
4.10
Introduction to if statements
4.11
Chars
4.12
Introduction to type conversion and static_cast
4.13
An introduction to std::string
4.14
Literal constants
Updated
4.15
Symbolic constants: const and constexpr variables
Updated
4.x
Chapter 4 summary and quiz
Chapter 5
Operators
5.1
Operator precedence and associativity
5.2
Arithmetic operators
5.3
Modulus and Exponentiation
5.4
Increment/decrement operators, and side effects
5.5
Comma and conditional operators
5.6
Relational operators and floating point comparisons
5.7
Logical operators
5.x
Chapter 5 summary and quiz
Chapter O
Bit Manipulation (optional chapter)
O.1
Bit flags and bit manipulation via std::bitset
O.2
Bitwise operators
O.3
Bit manipulation with bitwise operators and bit masks
O.4
Converting between binary and decimal
Chapter 6
Scope, Duration, and Linkage
6.1
Compound statements (blocks)
6.2
User-defined namespaces and the scope resolution operator
6.3
Local variables
6.4
Introduction to global variables
6.5
Variable shadowing (name hiding)
6.6
Internal linkage
6.7
External linkage
6.8
Why (non-const) global variables are evil
6.9
Sharing global constants across multiple files (using inline variables)
6.10
Static local variables
6.11
Scope, duration, and linkage summary
6.12
Using declarations and using directives
6.13
Unnamed and inline namespaces
6.x
Chapter 6 summary and quiz
Chapter 7
Control Flow and Error Handling
7.1
Control flow introduction
7.2
If statements and blocks
7.3
Common if statement problems
7.4
Switch statement basics
7.5
Switch fallthrough and scoping
7.6
Goto statements
7.7
Intro to loops and while statements
7.8
Do while statements
7.9
For statements
7.10
Break and continue
7.11
Halts (exiting your program early)
7.12
Introduction to testing your code
7.13
Code coverage
7.14
Common semantic errors in C++
7.15
Detecting and handling errors
7.16
std::cin and handling invalid input
7.17
Assert and static_assert
7.18
Introduction to random number generation
Updated
7.19
Generating random numbers using Mersenne Twister
Updated
7.x
Chapter 7 summary and quiz
Updated
Chapter 8
Type Conversion and Function Overloading
8.1
Implicit type conversion (coercion)
8.2
Floating-point and integral promotion
8.3
Numeric conversions
8.4
Arithmetic conversions
8.5
Explicit type conversion (casting) and static_cast
8.6
Typedefs and type aliases
8.7
Type deduction for objects using the auto keyword
8.8
Type deduction for functions
8.9
Introduction to function overloading
8.10
Function overload differentiation
8.11
Function overload resolution and ambiguous matches
8.12
Default arguments
8.13
Function templates
8.14
Function template instantiation
8.15
Function templates with multiple template types
8.x
Chapter 8 summary and quiz
Jan 18th: Chapter 9 has been updated!
Chapter 9
Compound Types
9.1
Introduction to compound data types
Updated
9.2
Value categories (lvalues and rvalues)
Updated
9.3
Lvalue references
Updated
9.4
Lvalue references to const
Updated
9.5
Pass by lvalue reference
Updated
9.6
Introduction to pointers
Updated
9.7
Null pointers
Updated
9.8
Pointers and const
Updated
9.9
Pass by address
Updated
9.10
Pass by address (part 2)
Updated
9.11
Return by reference and return by address
Updated
9.12
Type deduction with pointers, references, and const
New
9.13
Introduction to program-defined (user-defined) types
Updated
9.14
Unscoped enumerations
Updated
9.15
Unscoped enumeration input and output
Updated
9.16
Scoped enumerations (enum classes)
Updated
9.17
Introduction to structs, members, and member selection
Updated
9.18
Struct aggregate initialization
Updated
9.19
Default member initialization
Updated
9.20
Struct passing and miscellany
Updated
9.21
Member selection with pointers and references
Updated
9.x
Chapter 9 summary and quiz
Updated
9.y
Using a language reference
Chapter 10
Arrays, Strings, Pointers, and References
10.1
Arrays (Part I)
10.2
Arrays (Part II)
10.3
Arrays and loops
10.4
Sorting an array using selection sort
10.5
Multidimensional Arrays
10.6
C-style strings
10.7
An introduction to std::string_view
10.8
Pointers and arrays
10.9
Pointer arithmetic and array indexing
10.10
C-style string symbolic constants
10.11
Dynamic memory allocation with new and delete
10.12
Dynamically allocating arrays
10.13
For-each loops
10.14
Void pointers
10.15
Pointers to pointers and dynamic multidimensional arrays
10.16
An introduction to std::array
10.17
An introduction to std::vector
10.18
Introduction to iterators
10.19
Introduction to standard library algorithms
10.x
Chapter 10 comprehensive quiz
Chapter 11
Functions
11.1
Inline functions
11.2
Function Pointers
11.3
The stack and the heap
11.4
std::vector capacity and stack behavior
11.5
Recursion
11.6
Command line arguments
11.7
Ellipsis (and why to avoid them)
11.8
Introduction to lambdas (anonymous functions)
11.9
Lambda captures
11.x
Chapter 11 comprehensive quiz
Chapter 12
Basic Object-oriented Programming
12.1
Welcome to object-oriented programming
12.2
Classes and class members
12.3
Public vs private access specifiers
12.4
Access functions and encapsulation
12.5
Constructors
12.6
Constructor member initializer lists
12.7
Non-static member initialization
12.8
Overlapping and delegating constructors
12.9
Destructors
12.10
The hidden “this” pointer
12.11
Class code and header files
12.12
Const class objects and member functions
12.13
Static member variables
12.14
Static member functions
12.15
Friend functions and classes
12.16
Anonymous objects
12.17
Nested types in classes
12.18
Timing your code
12.x
Chapter 12 comprehensive quiz
Chapter 13
Operator overloading
13.1
Introduction to operator overloading
13.2
Overloading the arithmetic operators using friend functions
13.3
Overloading operators using normal functions
13.4
Overloading the I/O operators
13.5
Overloading operators using member functions
13.6
Overloading unary operators +, -, and !
13.7
Overloading the comparison operators
13.8
Overloading the increment and decrement operators
13.9
Overloading the subscript operator
13.10
Overloading the parenthesis operator
13.11
Overloading typecasts
13.12
The copy constructor
13.13
Copy initialization
13.14
Converting constructors, explicit, and delete
13.15
Overloading the assignment operator
13.16
Shallow vs. deep copying
13.17
Overloading operators and function templates
13.x
Chapter 13 comprehensive quiz
Chapter 14
Reserved for Future Reorganization
Chapter 15
Reserved for Future Reorganization
Chapter 16
An Introduction to Object Relationships
16.1
Object relationships
16.2
Composition
16.3
Aggregation
16.4
Association
16.5
Dependencies
16.6
Container classes
16.7
std::initializer_list
16.x
Chapter 16 comprehensive quiz
Chapter 17
Inheritance
17.1
Introduction to inheritance
17.2
Basic inheritance in C++
17.3
Order of construction of derived classes
17.4
Constructors and initialization of derived classes
17.5
Inheritance and access specifiers
17.6
Adding new functionality to a derived class
17.7
Calling inherited functions and overriding behavior
17.8
Hiding inherited functionality
17.9
Multiple inheritance
17.x
Chapter 17 comprehensive quiz
Chapter 18
Virtual Functions
18.1
Pointers and references to the base class of derived objects
18.2
Virtual functions and polymorphism
18.3
The override and final specifiers, and covariant return types
18.4
Virtual destructors, virtual assignment, and overriding virtualization
18.5
Early binding and late binding
18.6
The virtual table
18.7
Pure virtual functions, abstract base classes, and interface classes
18.8
Virtual base classes
18.9
Object slicing
18.10
Dynamic casting
18.11
Printing inherited classes using operator<<
18.x
Chapter 18 comprehensive quiz
Chapter 19
Templates and Classes
19.1
Template classes
19.2
Template non-type parameters
19.3
Function template specialization
19.4
Class template specialization
19.5
Partial template specialization
19.6
Partial template specialization for pointers
19.x
Chapter 19 comprehensive quiz
Chapter 20
Exceptions
20.1
The need for exceptions
20.2
Basic exception handling
20.3
Exceptions, functions, and stack unwinding
20.4
Uncaught exceptions and catch-all handlers
20.5
Exceptions, classes, and inheritance
20.6
Rethrowing exceptions
20.7
Function try blocks
20.8
Exception dangers and downsides
20.9
Exception specifications and noexcept
20.x
Chapter 20 comprehensive quiz
Chapter M
Move Semantics and Smart Pointers
M.1
Intro to smart pointers and move semantics
M.2
R-value references
M.3
Move constructors and move assignment
M.4
std::move
M.5
std::move_if_noexcept
M.6
std::unique_ptr
M.7
std::shared_ptr
M.8
Circular dependency issues with std::shared_ptr, and std::weak_ptr
M.x
Chapter M comprehensive review
Chapter 21
The Standard Template Library
21.1
The Standard Library
21.2
STL containers overview
21.3
STL iterators overview
21.4
STL algorithms overview
Chapter 22
std::string
22.1
std::string and std::wstring
22.2
std::string construction and destruction
22.3
std::string length and capacity
22.4
std::string character access and conversion to C-style arrays
22.5
std::string assignment and swapping
22.6
std::string appending
22.7
std::string inserting
Chapter 23
Input and Output (I/O)
23.1
Input and output (I/O) streams
23.2
Input with istream
23.3
Output with ostream and ios
23.4
Stream classes for strings
23.5
Stream states and input validation
23.6
Basic file I/O
23.7
Random file I/O
Appendix A
Miscellaneous Subjects
A.1
Static and dynamic libraries
A.2
Using libraries with Visual Studio
A.3
Using libraries with Code::Blocks
Appendix B
C++ Updates
B.1
Introduction to C++11
B.2
Introduction to C++14
B.3
Introduction to C++17
B.4
Introduction to C++20
Appendix C
The End
C.1
The end?
C++ 面向對象編程
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。