Embracing Modern C++ Safely, 1st edition
BRAND: PEARSON
Publisher: | Addison-Wesley Professional |
Author: | John Lakos; Vittorio Romeo; Rostislav Khlebnikov; Alisdair Meredith |
Edition: | (December 16, 2021) © 2022 |
eBook ISBN: | 9780137380510 |
Print ISBN: | 9780134301846 |
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
Tối đa hóa phần thưởng và giảm thiểu rủi ro với C++ hiện đại
Ôm lấy C++ hiện đại Một cách an toàn chỉ cho học sinh cách sử dụng hiệu quả các tính năng ngôn ngữ mới và nâng cao của C++ hiện đại mà không trở thành nạn nhân của những cạm bẫy tiềm ẩn.
Dựa trên kinh nghiệm nhiều năm của họ với các dự án lớn, quan trọng, bốn cơ quan quản lý C++ hàng đầu chia các tính năng của ngôn ngữ C++ 11/14 thành ba loại: An toàn, An toàn có điều kiện và Không an toàn. Các tính năng an toàn mang lại giá trị hấp dẫn, dễ sử dụng hiệu quả và tương đối khó sử dụng sai mục đích. Các tính năng An toàn có điều kiện mang lại giá trị đáng kể nhưng đi kèm với những rủi ro đòi hỏi kiến thức chuyên môn và sự quen thuộc đáng kể trước khi sử dụng. Các tính năng không an toàn có tỷ lệ rủi ro/phần thưởng đặc biệt kém, dễ bị lạm dụng và chỉ có lợi trong những trường hợp đặc biệt nhất.
Cuốn sách này chắt lọc kinh nghiệm nhiều năm áp dụng các tính năng của C++ 11 và C++ 14 của cộng đồng C++, đồng thời sẽ giúp sinh viên đưa ra các quyết định thiết kế hiệu quả và an toàn phản ánh sự cân bằng kỹ thuật kinh tế, trong thế giới thực trong môi trường phát triển phần mềm đa dạng, quy mô lớn. Các tác giả sử dụng các ví dụ lấy từ cơ sở mã thực để minh họa mọi phát hiện một cách khách quan và làm sáng tỏ các vấn đề chính. Mỗi tính năng xác định các trường hợp sử dụng âm thanh, những cạm bẫy tiềm ẩn và những thiếu sót của tính năng ngôn ngữ đó. Sau khi đọc cuốn sách này, học sinh sẽ:
Hiểu từng tính năng của C++ 11/14 làm gì và nó hoạt động tốt nhất ở đâu
Nhận biết cách giải quyết các cạm bẫy khi dừng chiếu và các trường hợp góc khó chịu
Biết những tính năng nào cần đào tạo thêm, kinh nghiệm và đánh giá ngang hàng
Đạt được những hiểu biết sâu sắc để chuẩn bị các tiêu chuẩn mã hóa và hướng dẫn phong cách phù hợp với nhu cầu của tổ chức
Được trang bị để giới thiệu C++ hiện đại một cách tuần tự và thận trọng vào các cơ sở mã đã được thiết lập
Các nhà phát triển C++ dày dạn kinh nghiệm, trưởng nhóm và quản lý kỹ thuật muốn cải thiện năng suất, chất lượng mã và khả năng bảo trì sẽ nhận thấy những hiểu biết sâu sắc trong tài liệu tham khảo được sắp xếp tỉ mỉ, mô-đun này là không thể thiếu.
Đăng ký cuốn sách này để có quyền truy cập thuận tiện vào các bản tải xuống, cập nhật và/hoặc chỉnh sửa khi chúng có sẵn. Xem sách bên trong để biết chi tiết.
Foreword by Shawn Edwards xiii
Foreword by Andrei Alexandrescu xv
Acknowledgments xix
About the Authors xxv
Chapter 0: Introduction 1
What Makes This Book Different 1
Scope for the First Edition 2
The EMC++S Guiding Principles 3
What Do We Mean by Safely? 4
A Safe Feature 5
A Conditionally Safe Feature 5
An Unsafe Feature 6
Modern C++ Feature Catalog 6
How to Use This Book 8
Chapter 1: Safe Features 11
1.1 C++11 11
Attribute Syntax | Generalized Attribute Support 12
Consecutive >s | Consecutive Right-Angle Brackets 21
decltype | Operator for Extracting Expression Types 25
Defaulted Functions | Using = default for Special Member Functions 33
Delegating Ctors | Constructors Calling Other Constructors 46
Deleted Functions | Using = delete for Arbitrary Functions 53
explicit Operators | Explicit Conversion Operators 61
Function static '11 | Thread-Safe Function-Scope static Variables 68
Local Types '11 | Local/Unnamed Types as Template Arguments 83
long long | The long long (≥64 bits) Integral Type 89
noreturn | The [[noreturn]] Attribute 95
nullptr | The Null-Pointer-Literal Keyword 99
override | The override Member-Function Specifier 104
Raw String Literals | Syntax for Unprocessed String Contents 108
static_assert | Compile-Time Assertions 115
Trailing Return | Trailing Function Return Types 124
Unicode Literals | Unicode String Literals 129
using Aliases | Type/Template Aliases (Extended typedef) 133
1.2 C++14 138
Aggregate Init '14 | Aggregates Having Default Member Initializers 138
Binary Literals | Binary Literals: The 0b Prefix 142
deprecated | The [[deprecated]] Attribute 147
Digit Separators | The Digit Separator (') 152
Variable Templates | Templated Variable Declarations/Definitions 157
Chapter 2: Conditionally Safe Features 167
2.1 C++11 167
alignas | The alignas Specifier 168
alignof | The alignof Operator 184
auto Variables | Variables of Automatically Deduced Type 195
Braced Init | Braced-Initialization Syntax: {} 215
constexpr Functions | Compile-Time Invocable Functions 257
constexpr Variables | Compile-Time Accessible Variables 302
Default Member Init | Default class/union Member Initializers 318
enum class | Strongly Typed, Scoped Enumerations 332
extern template | Explicit-Instantiation Declarations 353
Forwarding References | Forwarding References (T&&) 377
Generalized PODs '11 | Trivial and Standard-Layout Types 401
Inheriting Ctors | Inheriting Base-Class Constructors 535
initializer_list | List Initialization: std::initializer_list<T> 553
Lambdas | Anonymous Function Objects (Closures) 573
noexcept Operator | Asking if an Expression Cannot throw 615
Opaque enums | Opaque Enumeration Declarations 660
Range for | Range-Based for Loops 679
Rvalue References | Move Semantics and Rvalue References (&&) 710
Underlying Type '11 | Explicit Enumeration Underlying Type 829
User-Defined Literals | User-Defined Literal Operators 835
Variadic Templates | Variable-Argument-Count Templates 873
2.2 C++14 958
constexpr Functions '14 | Relaxed Restrictions on constexpr Functions 959
Generic Lambdas | Lambdas Having a Templated Call Operator 968
Lambda Captures | Lambda-Capture Expressions 986
Chapter 3: Unsafe Features 997
3.1 C++11 997
carries_dependency | The [[carries_dependency]] Attribute 998
final | Prohibiting Overriding and Derivation 1007
friend '11 | Extended friend Declarations 1031
inline namespace | Transparently Nested Namespaces 1055
noexcept Specifier | The noexcept Function Specification 1085
Ref-Qualifiers | Reference-Qualified Member Functions 1153
union '11 | Unions Having Non-Trivial Members 1174
3.2 C++14 1182
auto Return | Function (auto) Return-Type Deduction 1182
decltype(auto) | Deducing Types Using decltype Semantics 1205
Afterword: Looking Back and Looking Forward 1215
Glossary 1217
Bibliography 1281
Index 1305
Tối đa hóa phần thưởng và giảm thiểu rủi ro với C++ hiện đại
Ôm lấy C++ hiện đại Một cách an toàn chỉ cho học sinh cách sử dụng hiệu quả các tính năng ngôn ngữ mới và nâng cao của C++ hiện đại mà không trở thành nạn nhân của những cạm bẫy tiềm ẩn.
Dựa trên kinh nghiệm nhiều năm của họ với các dự án lớn, quan trọng, bốn cơ quan quản lý C++ hàng đầu chia các tính năng của ngôn ngữ C++ 11/14 thành ba loại: An toàn, An toàn có điều kiện và Không an toàn. Các tính năng an toàn mang lại giá trị hấp dẫn, dễ sử dụng hiệu quả và tương đối khó sử dụng sai mục đích. Các tính năng An toàn có điều kiện mang lại giá trị đáng kể nhưng đi kèm với những rủi ro đòi hỏi kiến thức chuyên môn và sự quen thuộc đáng kể trước khi sử dụng. Các tính năng không an toàn có tỷ lệ rủi ro/phần thưởng đặc biệt kém, dễ bị lạm dụng và chỉ có lợi trong những trường hợp đặc biệt nhất.
Cuốn sách này chắt lọc kinh nghiệm nhiều năm áp dụng các tính năng của C++ 11 và C++ 14 của cộng đồng C++, đồng thời sẽ giúp sinh viên đưa ra các quyết định thiết kế hiệu quả và an toàn phản ánh sự cân bằng kỹ thuật kinh tế, trong thế giới thực trong môi trường phát triển phần mềm đa dạng, quy mô lớn. Các tác giả sử dụng các ví dụ lấy từ cơ sở mã thực để minh họa mọi phát hiện một cách khách quan và làm sáng tỏ các vấn đề chính. Mỗi tính năng xác định các trường hợp sử dụng âm thanh, những cạm bẫy tiềm ẩn và những thiếu sót của tính năng ngôn ngữ đó. Sau khi đọc cuốn sách này, học sinh sẽ:
Hiểu từng tính năng của C++ 11/14 làm gì và nó hoạt động tốt nhất ở đâu
Nhận biết cách giải quyết các cạm bẫy khi dừng chiếu và các trường hợp góc khó chịu
Biết những tính năng nào cần đào tạo thêm, kinh nghiệm và đánh giá ngang hàng
Đạt được những hiểu biết sâu sắc để chuẩn bị các tiêu chuẩn mã hóa và hướng dẫn phong cách phù hợp với nhu cầu của tổ chức
Được trang bị để giới thiệu C++ hiện đại một cách tuần tự và thận trọng vào các cơ sở mã đã được thiết lập
Các nhà phát triển C++ dày dạn kinh nghiệm, trưởng nhóm và quản lý kỹ thuật muốn cải thiện năng suất, chất lượng mã và khả năng bảo trì sẽ nhận thấy những hiểu biết sâu sắc trong tài liệu tham khảo được sắp xếp tỉ mỉ, mô-đun này là không thể thiếu.
Đăng ký cuốn sách này để có quyền truy cập thuận tiện vào các bản tải xuống, cập nhật và/hoặc chỉnh sửa khi chúng có sẵn. Xem sách bên trong để biết chi tiết.
Foreword by Shawn Edwards xiii
Foreword by Andrei Alexandrescu xv
Acknowledgments xix
About the Authors xxv
Chapter 0: Introduction 1
What Makes This Book Different 1
Scope for the First Edition 2
The EMC++S Guiding Principles 3
What Do We Mean by Safely? 4
A Safe Feature 5
A Conditionally Safe Feature 5
An Unsafe Feature 6
Modern C++ Feature Catalog 6
How to Use This Book 8
Chapter 1: Safe Features 11
1.1 C++11 11
Attribute Syntax | Generalized Attribute Support 12
Consecutive >s | Consecutive Right-Angle Brackets 21
decltype | Operator for Extracting Expression Types 25
Defaulted Functions | Using = default for Special Member Functions 33
Delegating Ctors | Constructors Calling Other Constructors 46
Deleted Functions | Using = delete for Arbitrary Functions 53
explicit Operators | Explicit Conversion Operators 61
Function static '11 | Thread-Safe Function-Scope static Variables 68
Local Types '11 | Local/Unnamed Types as Template Arguments 83
long long | The long long (≥64 bits) Integral Type 89
noreturn | The [[noreturn]] Attribute 95
nullptr | The Null-Pointer-Literal Keyword 99
override | The override Member-Function Specifier 104
Raw String Literals | Syntax for Unprocessed String Contents 108
static_assert | Compile-Time Assertions 115
Trailing Return | Trailing Function Return Types 124
Unicode Literals | Unicode String Literals 129
using Aliases | Type/Template Aliases (Extended typedef) 133
1.2 C++14 138
Aggregate Init '14 | Aggregates Having Default Member Initializers 138
Binary Literals | Binary Literals: The 0b Prefix 142
deprecated | The [[deprecated]] Attribute 147
Digit Separators | The Digit Separator (') 152
Variable Templates | Templated Variable Declarations/Definitions 157
Chapter 2: Conditionally Safe Features 167
2.1 C++11 167
alignas | The alignas Specifier 168
alignof | The alignof Operator 184
auto Variables | Variables of Automatically Deduced Type 195
Braced Init | Braced-Initialization Syntax: {} 215
constexpr Functions | Compile-Time Invocable Functions 257
constexpr Variables | Compile-Time Accessible Variables 302
Default Member Init | Default class/union Member Initializers 318
enum class | Strongly Typed, Scoped Enumerations 332
extern template | Explicit-Instantiation Declarations 353
Forwarding References | Forwarding References (T&&) 377
Generalized PODs '11 | Trivial and Standard-Layout Types 401
Inheriting Ctors | Inheriting Base-Class Constructors 535
initializer_list | List Initialization: std::initializer_list<T> 553
Lambdas | Anonymous Function Objects (Closures) 573
noexcept Operator | Asking if an Expression Cannot throw 615
Opaque enums | Opaque Enumeration Declarations 660
Range for | Range-Based for Loops 679
Rvalue References | Move Semantics and Rvalue References (&&) 710
Underlying Type '11 | Explicit Enumeration Underlying Type 829
User-Defined Literals | User-Defined Literal Operators 835
Variadic Templates | Variable-Argument-Count Templates 873
2.2 C++14 958
constexpr Functions '14 | Relaxed Restrictions on constexpr Functions 959
Generic Lambdas | Lambdas Having a Templated Call Operator 968
Lambda Captures | Lambda-Capture Expressions 986
Chapter 3: Unsafe Features 997
3.1 C++11 997
carries_dependency | The [[carries_dependency]] Attribute 998
final | Prohibiting Overriding and Derivation 1007
friend '11 | Extended friend Declarations 1031
inline namespace | Transparently Nested Namespaces 1055
noexcept Specifier | The noexcept Function Specification 1085
Ref-Qualifiers | Reference-Qualified Member Functions 1153
union '11 | Unions Having Non-Trivial Members 1174
3.2 C++14 1182
auto Return | Function (auto) Return-Type Deduction 1182
decltype(auto) | Deducing Types Using decltype Semantics 1205
Afterword: Looking Back and Looking Forward 1215
Glossary 1217
Bibliography 1281
Index 1305