Discovering Modern C++, 2nd edition
BRAND: PEARSON
Publisher: | Addison-Wesley Professional |
Author: | Peter Gottschling |
Edition: | (November 19, 2021) © 2022 |
eBook ISBN: | 9780137833016 |
Print ISBN: | 9780136677642 |
Type: | 1 Year Subscription. Dành cho Cá nhân |
eBook edition. 1 year Subscription. Dành cho Cá nhân | Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In
See what in the box
Mô tả sản phẩm
Khám phá C++ hiện đại, Phiên bản thứ hai của Peter Gottschling là phần giới thiệu chuyên sâu hướng dẫn bạn một cách suôn sẻ các cách tiếp cận phức tạp dựa trên các tính năng nâng cao. Được cập nhật kỹ lưỡng cho C++17 và C++20, Phiên bản thứ hai này giới thiệu các khái niệm chính bằng cách sử dụng các ví dụ từ nhiều lĩnh vực vấn đề kỹ thuật, dựa trên kinh nghiệm sâu rộng của ông trong việc đào tạo các chuyên gia và giảng dạy C++ cho sinh viên vật lý, toán và kỹ thuật.
Cuốn sách này được thiết kế để giúp học viên bắt đầu nhanh chóng và sau đó thành thạo các tính năng ngày càng mạnh mẽ, từ lambdas đến các mẫu biểu thức. Bạn cũng sẽ tìm hiểu cách tận dụng các thư viện mạnh mẽ có sẵn cho lập trình viên C++: cả Thư viện mẫu chuẩn (STL) và thư viện khoa học cho số học, đại số tuyến tính, phương trình vi phân và đồ thị. Trong Phiên bản thứ hai này, Gottschling cũng trình bày nội dung chuyên sâu và kỹ lưỡng về các mẫu đa luồng và đa dạng.
Xuyên suốt, Gottschling trình bày cách viết phần mềm rõ ràng và biểu cảm bằng cách sử dụng định hướng đối tượng, khái quát, siêu lập trình và kỹ thuật thủ tục. Khi hoàn thành, bạn sẽ nắm vững tất cả các khái niệm trừu tượng cần thiết để viết chương trình C++ với chất lượng và hiệu suất vượt trội.
Preface xix
Acknowledgments xxv
About the Author xxvii
Chapter 1: C++ Basics 1
1.1 Our First Program 1
1.2 Variables 4
1.3 Operators 12
1.4 Expressions and Statements 22
1.5 Functions 30
1.6 Error Handling 35
1.7 I/O 41
1.8 Arrays, Pointers, and References 52
1.9 Structuring Software Projects 64
1.10 Exercises 69
Chapter 2: Classes 71
2.1 Program for Universal Meaning, Not Technical Details 71
2.2 Members 73
2.3 Setting Values: Constructors and Assignments 78
2.4 Destructors 105
2.5 Method Generation Summary 111
2.6 Accessing Member Variables 112
2.7 Operator Overloading Design 117
2.8 Exercises 126
Chapter 3: Generic Programming 129
3.1 Function Templates 129
3.2 Namespaces and Function Lookup 138
3.3 Class Templates 147
3.4 Type Deduction and Definition 154
3.5 Template Specialization 162
3.6 Non-Type Parameters for Templates 174
3.7 Functors 177
3.8 Lambda 185
3.9 Variable Templates 190
3.10 Programming with Concept(s) 192
3.11 Variadic Templates 200
3.12 Exercises 208
Chapter 4: Libraries 211
4.1 Standard Template Library 211
4.2 Numerics 239
4.3 Meta-programming 252
4.4 Utilities 256
4.5 The Time Is Now 267
4.6 Concurrency 270
4.7 Scientific Libraries Beyond the Standard 282
4.8 Exercises 285
Chapter 5: Meta-Programming 289
5.1 Let the Compiler Compute 289
5.2 Providing and Using Type Information 297
5.3 Expression Templates 318
5.4 Meta-Tuning: Write Your Own Compiler Optimization 328
5.5 Optimizing with Semantic Concepts 354
5.6 Turing Completeness 359
5.7 Exercises 362
Chapter 6: Object-Oriented Programming 365
6.1 Basic Principles 365
6.2 Removing Redundancy 379
6.3 Multiple Inheritance 380
6.4 Dynamic Selection by Sub-typing 387
6.5 Conversion 389
6.6 Advanced Techniques 397
6.7 Exercises 405
Chapter 7: Scientific Projects 407
7.1 Implementation of ODE Solvers 407
7.2 Creating Projects 418
7.3 Modules 430
7.4 Some Final Words 434
Appendix A: Clumsy Stuff 435
A.1 More Good and Bad Scientific Software 435
A.2 Basics in Detail 441
A.3 Real-World Example: Matrix Inversion 449
A.4 Class Details 458
A.5 Method Generation 462
A.6 Template Details 474
A.7 More on Libraries 479
A.8 Dynamic Selection in Old Style 480
A.9 More about Meta-Programming 481
A.10 Linking to C Code 489
Appendix B: Programming Tools 491
B.1 g++ 491
B.2 Debugging 492
B.3 Memory Analysis 496
B.4 gnuplot 498
B.5 Unix, Linux, and Mac OS 498
Appendix C: Language Definitions 501
C.1 Value Categories 501
C.2 Operator Overview 502
C.3 Conversion Rules 504
Bibliography 507
Subject Index 513
Khám phá C++ hiện đại, Phiên bản thứ hai của Peter Gottschling là phần giới thiệu chuyên sâu hướng dẫn bạn một cách suôn sẻ các cách tiếp cận phức tạp dựa trên các tính năng nâng cao. Được cập nhật kỹ lưỡng cho C++17 và C++20, Phiên bản thứ hai này giới thiệu các khái niệm chính bằng cách sử dụng các ví dụ từ nhiều lĩnh vực vấn đề kỹ thuật, dựa trên kinh nghiệm sâu rộng của ông trong việc đào tạo các chuyên gia và giảng dạy C++ cho sinh viên vật lý, toán và kỹ thuật.
Cuốn sách này được thiết kế để giúp học viên bắt đầu nhanh chóng và sau đó thành thạo các tính năng ngày càng mạnh mẽ, từ lambdas đến các mẫu biểu thức. Bạn cũng sẽ tìm hiểu cách tận dụng các thư viện mạnh mẽ có sẵn cho lập trình viên C++: cả Thư viện mẫu chuẩn (STL) và thư viện khoa học cho số học, đại số tuyến tính, phương trình vi phân và đồ thị. Trong Phiên bản thứ hai này, Gottschling cũng trình bày nội dung chuyên sâu và kỹ lưỡng về các mẫu đa luồng và đa dạng.
Xuyên suốt, Gottschling trình bày cách viết phần mềm rõ ràng và biểu cảm bằng cách sử dụng định hướng đối tượng, khái quát, siêu lập trình và kỹ thuật thủ tục. Khi hoàn thành, bạn sẽ nắm vững tất cả các khái niệm trừu tượng cần thiết để viết chương trình C++ với chất lượng và hiệu suất vượt trội.
Preface xix
Acknowledgments xxv
About the Author xxvii
Chapter 1: C++ Basics 1
1.1 Our First Program 1
1.2 Variables 4
1.3 Operators 12
1.4 Expressions and Statements 22
1.5 Functions 30
1.6 Error Handling 35
1.7 I/O 41
1.8 Arrays, Pointers, and References 52
1.9 Structuring Software Projects 64
1.10 Exercises 69
Chapter 2: Classes 71
2.1 Program for Universal Meaning, Not Technical Details 71
2.2 Members 73
2.3 Setting Values: Constructors and Assignments 78
2.4 Destructors 105
2.5 Method Generation Summary 111
2.6 Accessing Member Variables 112
2.7 Operator Overloading Design 117
2.8 Exercises 126
Chapter 3: Generic Programming 129
3.1 Function Templates 129
3.2 Namespaces and Function Lookup 138
3.3 Class Templates 147
3.4 Type Deduction and Definition 154
3.5 Template Specialization 162
3.6 Non-Type Parameters for Templates 174
3.7 Functors 177
3.8 Lambda 185
3.9 Variable Templates 190
3.10 Programming with Concept(s) 192
3.11 Variadic Templates 200
3.12 Exercises 208
Chapter 4: Libraries 211
4.1 Standard Template Library 211
4.2 Numerics 239
4.3 Meta-programming 252
4.4 Utilities 256
4.5 The Time Is Now 267
4.6 Concurrency 270
4.7 Scientific Libraries Beyond the Standard 282
4.8 Exercises 285
Chapter 5: Meta-Programming 289
5.1 Let the Compiler Compute 289
5.2 Providing and Using Type Information 297
5.3 Expression Templates 318
5.4 Meta-Tuning: Write Your Own Compiler Optimization 328
5.5 Optimizing with Semantic Concepts 354
5.6 Turing Completeness 359
5.7 Exercises 362
Chapter 6: Object-Oriented Programming 365
6.1 Basic Principles 365
6.2 Removing Redundancy 379
6.3 Multiple Inheritance 380
6.4 Dynamic Selection by Sub-typing 387
6.5 Conversion 389
6.6 Advanced Techniques 397
6.7 Exercises 405
Chapter 7: Scientific Projects 407
7.1 Implementation of ODE Solvers 407
7.2 Creating Projects 418
7.3 Modules 430
7.4 Some Final Words 434
Appendix A: Clumsy Stuff 435
A.1 More Good and Bad Scientific Software 435
A.2 Basics in Detail 441
A.3 Real-World Example: Matrix Inversion 449
A.4 Class Details 458
A.5 Method Generation 462
A.6 Template Details 474
A.7 More on Libraries 479
A.8 Dynamic Selection in Old Style 480
A.9 More about Meta-Programming 481
A.10 Linking to C Code 489
Appendix B: Programming Tools 491
B.1 g++ 491
B.2 Debugging 492
B.3 Memory Analysis 496
B.4 gnuplot 498
B.5 Unix, Linux, and Mac OS 498
Appendix C: Language Definitions 501
C.1 Value Categories 501
C.2 Operator Overview 502
C.3 Conversion Rules 504
Bibliography 507
Subject Index 513